在我的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().此外,鉴于其中只有一项任务可以在任何时刻运行,这是否有意义?
总结以上是内存溢出为你收集整理的Java – Timer.cancel()v / s TimerTask.cancel()全部内容,希望文章能够帮你解决Java – Timer.cancel()v / s TimerTask.cancel()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)