关于Timer计时器控件的java.lang.IllegalStateException: TimerTask is scheduled already问题分析
2017-05-02 11:42
513 查看
博主最近在改被人的项目,准备写一个类似今日头条的加载完成提示,就写了个计时器让它显示几秒,于是就用到了timer这个计时器控件,简单的正常代码如下,因为博主的加载需要多次,当timer二次调用的时候就出现了java.lang.IllegalStateException: TimerTask is scheduled already异常,于是苦恼了老半天,不知道为什么,每次刷新的时候我哦重新给timer 创建新对象或者cancel()都还是报这个异常,正常的timer代码如下
Timer timer = new Timer();
private int tips_time= 20;
public void tipsStart() {
timer .schedule(taskTips, 1000, 1000); // timeTask
}
final Handler handlerTips = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
if (tips_time < 0) {
timerTipS.cancel();
}
}
}
};
TimerTask taskTips = new TimerTask() {
@Override
public void run() {
tips_time--;
Message message = new Message();
message.what = 1;
handlerTips.sendMessage(message);
}
};
然后楼主翻阅了很多资料才发现,只要timer这个控件第二次调用就会出现出现这个异常,解决办法如下,自定义一个类集成TimerTask即可
class RequestTimerTask extends TimerTask {
public void run() {
tips_time--;
Message message = new Message();
message.what = 1;
handlerTips.sendMessage(message);
}
}然后把
Timer timer = new Timer();
private int tips_time= 20;
public void tipsStart() {
timer .schedule(taskTips, 1000, 1000); // timeTask
}
final Handler handlerTips = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
if (tips_time < 0) {
timerTipS.cancel();
}
}
}
};
TimerTask taskTips = new TimerTask() {
@Override
public void run() {
tips_time--;
Message message = new Message();
message.what = 1;
handlerTips.sendMessage(message);
}
};
然后楼主翻阅了很多资料才发现,只要timer这个控件第二次调用就会出现出现这个异常,解决办法如下,自定义一个类集成TimerTask即可
class RequestTimerTask extends TimerTask {
public void run() {
tips_time--;
Message message = new Message();
message.what = 1;
handlerTips.sendMessage(message);
}
}然后把
timer .schedule(taskTips, 1000, 1000);中的taskTips改成 new RequestTimerTask();即可,完美解决!
相关文章推荐
- java.lang.IllegalStateException: TimerTask is scheduled already问题分析
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法
- java.lang.IllegalStateException: TimerTask is scheduled already
- java.lang.IllegalStateException: TimerTask is scheduled already
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法【转】
- 关于错误:TimerTask is scheduled already
- 关于错误:TimerTask is scheduled already
- 关于错误:TimerTask is scheduled already
- 关于Mybatis "There is no getter for property named 'XXX' in class java.lang.String"的问题
- TimerTask is scheduled already 解决方法
- Timer TimerTask 定时任务 Timer was canceled TimerTask is scheduled already
- 关于错误【java.lang.IllegalStateException: Timer already cancelled】
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is schedule
- IllegalStateException: TimerTask is scheduled already
- About error:TimerTask is scheduled already
- 关于java.lang.IllegalStateException: Fragment already added的问题
- TimerTask is scheduled already 异常
- TimerTask is scheduled already