在我的Android应用程序中,我运行一个计时器并在其他一些事件上取消它:
class MyTimerTask extends TimerTask {
override boolean cancel() {
...
}
override void run() {
...
}
}
...
Timer t = new Timer();
t.schedule(new MyTimerTask(),...)
...
t.cancel();
我期待t.cancel()自动调用MyTimerTask的cancel()方法.但是从不调用该方法.
我想知道这两种方法之间究竟有什么不同,以及为什么第二种方法不能自动调用.
解决方法:
我想你打算在你的MyTimerTask实例上调用cancel()
阅读此方法的文档……
http://developer.android.com/reference/java/util/TimerTask.html
public boolean cancel()
取消TimerTask并将其从Timer的队列中删除.通常,如果调用没有阻止TimerTask至少运行一次,则返回false.后续调用无效.
http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html#cancel
public void cancel()
终止此计时器,丢弃当前计划的任何任务.不干扰当前正在执行的任务(如果存在).一旦计时器终止,其执行线程将正常终止,并且不再可以在其上安排任何任务.
请注意,在此计时器调用的计时器任务的run方法中调用此方法绝对可以保证正在进行的任务执行是此计时器将执行的最后一次任务执行.
可以重复调用该方法;第二次和后续的通话都没有效果.
在计时器上调用cancel()会停止它并删除所有排队的任务.但是没有承诺在这些任务上调用cancel().此外,鉴于其中只有一项任务可以在任何时刻运行,这是否有意义?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。