java timer的cancel()调用后为什么没停止?
timer=newTimer();task=newMyTask();timer.schedule(task,0,100);大概这样创建一个定时器,然后在MyTask里写个...
timer = new Timer();
task = new MyTask();
timer.schedule(task,0, 100);
大概这样创建一个定时器,然后在MyTask里写个当 i 加到1000就调用timer.cancel();
Toast.makeText(MyActivity.this,"i"+"********* ", Toast.LENGTH_SHORT).show();
会发现就算是timer.cancel();被调用了,定时器还是在运行,直到很久才结束。请问这是怎么回事? 展开
task = new MyTask();
timer.schedule(task,0, 100);
大概这样创建一个定时器,然后在MyTask里写个当 i 加到1000就调用timer.cancel();
Toast.makeText(MyActivity.this,"i"+"********* ", Toast.LENGTH_SHORT).show();
会发现就算是timer.cancel();被调用了,定时器还是在运行,直到很久才结束。请问这是怎么回事? 展开
2个回答
展开全部
/**
* Cancels the {@code Timer} and all scheduled tasks. If there is a
* currently running task it is not affected. No more tasks may be scheduled
* on this {@code Timer}. Subsequent calls do nothing.
*/
public void cancel() {
impl.cancel();
}
这个Timer.class中关于cancel()的注释,也就是说当有running task时,他不会起作用的。你想要停止该TimerTask,应该使用的是task.cancel().
* Cancels the {@code Timer} and all scheduled tasks. If there is a
* currently running task it is not affected. No more tasks may be scheduled
* on this {@code Timer}. Subsequent calls do nothing.
*/
public void cancel() {
impl.cancel();
}
这个Timer.class中关于cancel()的注释,也就是说当有running task时,他不会起作用的。你想要停止该TimerTask,应该使用的是task.cancel().
追问
你的说法应该是对的。。。但是我在MyTask里 调用task.cancel();还是没用。。。不过如果写在timer = new Timer();
task = new MyTask();
timer.schedule(task,0, 100);
后面写个task.cancel();。。。确实这个定时器失效了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询