我在我的应用程序中有一个服务,它将一个可运行的(在另一个 java 文件中)放入一个线程并启动它。这一次可以正常工作,但我希望它在一段时间内重复。我需要一个好方法来处理它。我没有使用其他问题的答案的原因是我不希望它无限重复,也不知道它会重复多少次任务。它只会由于在 UI 中单击按钮而停止。
我正在考虑使用带有 sleep 和 if 语句的循环。但我认为这对我的应用程序来说真的很糟糕。有没有做这种事情的标准方法?
谢谢...
您可以使用以某种方式充当计时器的处理程序,但我认为它更适合您的情况。
你像这样初始化它:
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);
使用 TimerTask 并让它执行您的线程/方法。
http://android.okhelp.cz/timer-simple-timertask-java-android-example/
http://developer.android.com/reference/java/util/TimerTask.html - 您可以使用 Cancel() 方法停止 TimerTask 执行。
使用 Timer 它将在给定时间段后运行线程,当您想停止时,只需停止计时器或将其设置为无限时间段。