关闭

java.lang.IllegalStateException: TimerTask is scheduled already问题分析

4379人阅读 评论(0) 收藏 举报
分类:

今天想用一个timer去定时的机制,所以先添加了一个TimerTask

	TimerTask task = new TimerTask(){
		public void run() {
			Log.d("auth","timer on schedule");
			mCb.OnCallback("TIMEOUT", mRes);
			timer.cancel();
		}
	};

然后在需要调用的地方使用

		timer = new Timer();
		timer.schedule(task,delay);
设定相对应的timer和delay时间的长短。然后发现一个问题就是在第二次调用timer.schedule(task,delay);的时候就会报java.lang.IllegalStateException: TimerTask is scheduled already的错误,然后系统崩溃,退出。

在网络上查找了一些相关内容,得出一个结论,TimerTask是一次性的,用完了就得扔,要用的话需要重新new一个新的TimerTask出来,遂改成:

	class RequestTimerTask extends TimerTask {
		public void run() {
			Log.d(TAG,"timer on schedule");
			timer.cancel();

		}
      	}

然后再去定义个Timer,在每次需要定时的地方使用

	timer = new Timer();
	timer.schedule(new RequestTimerTask(),8000);

这样就正常了。

4
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:53362次
    • 积分:302
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:48篇
    • 译文:1篇
    • 评论:7条
    文章分类
    最新评论