如何取消计时器的现有计划

时间:2011-10-27 08:30:23

标签: android timer schedule

目前我正在使用计时器在每个间隔时间执行一些功能。但是,稍后当我想更改执行函数的时间间隔时,我无法取消之前的时间表。怎么解决这个问题?感谢

2 个答案:

答案 0 :(得分:5)

使用timer.cancel()方法,您可以取消计时器和所有计划任务。 (请参阅API documentation)或者您可以在TimerTask timertask.cancel()上调用cancel方法(参见API documentation

如果要更改预定时间,应取消TimerTask并添加新的TimerTask。

答案 1 :(得分:3)

您可以考虑使用ScheduledThreadPoolExecutor代替Timer

用法很简单。您创建执行程序的实例:

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor( 1 );

然后当你想要添加一个你打电话的任务时:

executor.scheduleAtFixedRate( myRunnable, delay, interval, unit );

myRunnable是您的任务(实现Runnable - 接口),delay是第一次执行任务的时间,interval是时间首次执行后执行任务之间。 delayinterval基于unit参数进行测量,该参数可以是TimeUnit。*(其中*是SECONDS,MINUTES,MILLISECONDS等)。

然后停止你打电话的执行:

executor.shutdownNow();

然后你可以用不同的间隔重新提交你的任务。

注意:在重新提交任务之前,您可能需要创建执行程序的新实例,但我不确定原因。