android中调用timer.cancel函数问题

yong520tong 2011-05-15 06:46:22
用了一个事件触发了timer.cancel()函数,当我想重新调用timer的时候就报错说timer已经cancel,有什么方法重新调用timer么???
...全文
809 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongyuandeni 2011-05-16
  • 打赏
  • 举报
回复
楼主,重新定义一个timer呀
geshibuzhengque 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 yong520tong 的回复:]
用了一个事件触发了timer.cancel()函数,当我想重新调用timer的时候就报错说timer已经cancel,有什么方法重新调用timer么???
[/Quote]

写错了一个地方,更正一下。

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Timer timer = new Timer();
MyTask task = new MyTask();
MyTask task1 = new MyTask();
timer.schedule(task1, 0, 2000);
Thread.sleep(5000);
task1.cancel();
timer.schedule(task.getCopy(), 5000, 1000);
}
geshibuzhengque 2011-05-16
  • 打赏
  • 举报
回复
以前遇到过这种情况,只不过不是android下的。我的解决办法是对timertask进行操作,首先保持一个timertask的一个备份。操作时cancel timertask,然后重新调用的时候再schedule一次他的备份。
代码示例:

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Timer_cancel {

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Timer timer = new Timer();
MyTask task = new MyTask();
timer.schedule(task.getCopy(), 0, 2000);
Thread.sleep(5000);
task.cancel();
timer.schedule(task.getCopy(), 0, 1000);
}

static class MyTask extends TimerTask implements Cloneable {

private MyTask myTask;

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName() + "\t" + new Date());
}

public MyTask getCopy() {
if(myTask == null)
myTask = new MyTask();
try {
return (MyTask)myTask.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
}
sky123123 2011-05-16
  • 打赏
  • 举报
回复
重新new一个不可以吗???

80,476

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧