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

来源:互联网 发布:数据库架构 编辑:程序博客网 时间:2024/06/05 19:11

今天想用一个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);

这样就正常了。

2 0
原创粉丝点击