Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Timer.cancel()v/s TimerTask.cancel()_Java_Android_Timer_Timertask - Fatal编程技术网

Java-Timer.cancel()v/s TimerTask.cancel()

Java-Timer.cancel()v/s TimerTask.cancel(),java,android,timer,timertask,Java,Android,Timer,Timertask,在我的Android应用程序中,我运行计时器并在其他事件中取消它: class MyTimerTask extends TimerTask { override boolean cancel() { ... } override void run() { ... } } ... Timer t = new Timer(); t.schedule(new MyTimerTask(),

在我的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()

请阅读此方法的文档


公共布尔取消()

取消计时器任务并将其从计时器队列中删除。通常,如果调用未阻止TimerTask至少运行一次,则返回false。后续调用无效


终止此计时器,放弃所有当前计划的任务。不干扰当前正在执行的任务(如果存在)。一旦计时器被终止,它的执行线程将正常终止,并且不能在其上安排更多的任务

请注意,从该计时器调用的计时器任务的run方法中调用此方法绝对可以确保正在进行的任务执行是该计时器将执行的最后一次任务执行

此方法可以重复调用;第二次和后续调用无效


在计时器上调用
cancel()
,将停止计时器并删除其所有排队的任务。但是不能保证对这些任务调用
cancel()
。此外,考虑到这些任务中只有一个在任何时候都可以运行,这有意义吗

public void cancel()