我在我的应用程序中有一个服务,它将一个runnable(在另一个java文件中)放入一个线程并启动它。 这一次工作正常,但由于某段时间,我希望它是重复的。 我需要一个很好的方法来处理它。 我没有使用其他问题的答案的原因是我不希望它重复无限,也不知道它会重复多少次任务。它会因UI中的按钮单击而停止。
我正在考虑使用带有sleep和if语句的循环。但我认为这对我的应用来说是非常糟糕的设计。做这样的事情有标准的方法吗?
...谢谢
答案 0 :(得分:3)
你可以使用一个像某个计时器那样行事的处理程序,但我认为这对你的情况更好。
您可以像这样初始化它:
Handler delayhandler = new Handler();
设置它的触发时间(以毫秒为单位):
delayhandler.postDelayed(mUpdateTimeTask, 500);
它称之为:
private Runnable mUpdateTimeTask = new Runnable()
{ public void run()
{ // Todo
// This line is necessary for the next call
delayhandler.postDelayed(this, 100);
}
}
您还可以使用以下方法删除下一个电话:
delayhandler.removeCallbacks(mUpdateTimeTask);
答案 1 :(得分:1)
使用TimerTask并让它执行你的线程/方法。
http://android.okhelp.cz/timer-simple-timertask-java-android-example/
http://developer.android.com/reference/java/util/TimerTask.html - 您可以使用Cancel()方法停止执行TimerTask。
答案 2 :(得分:0)
使用定时器,它将在给定时间段后运行线程,并且当您想要停止仅停止定时器或将其设置为无限时间段时。