在这里并不想说Timer的用法问题,这种资料网上很多。只想说一下使用Timer 的注意问题吧。、
开始转入正题,暑假的时候做一个项目,项目中用到很多关于Timer的地方,不小心就会崩溃,当退出Activity 时总是莫名其妙的崩溃掉,后来注意到是Timer的问题,尤其是Timer是使用每隔一段时间执行一次那种,由于Activity结束之后,要隔一些时间可能系统才要进行回收,此时就会爆发出Timer的问题。所以在OnStop或者OnPause中注意释放Timer。由于有些Timer可能你需要在使用时就释放掉了,在上述俩函数在释放一次就会爆错了。在Timer调用cancel之后再使用的话要重新建立对象,也就是new一次,由于这种问题的出现,后来想了比较偷懒的办法,先写出来吧。
首先,声明全局变量 Timer timer ,此时要注意了紧随他我声明一个Boolean变量
Timer timer;
Boolean isTimerCancel;
其次,在OnCreate或者OnResume或者你喜欢的OnStart方法中进行实例化。
timer = new Timer();
isTimerCancel = false();
然后,重点来了,在使用timer之前,这样做一下
if(isTimerCancel)
{
timer = new Timer();
isTimerCancel = false;
}
然后在后面可以使用了。
碰到要使用timer.cancel()时,要记得在后面加上isTimerCancel= true;
即:
timer.cancel();
isTimerCancel= true;
在最后的OnPause或者OnStop方法中这样释放就好了,如下:
if(!isTimerCancel)
{
timer.cancel();
isTimerCancel = true;
}
相信大家都看懂是怎么样实现的了吧,使用之前就判断一下然后再决定是否新建对象,取消之前判断下是否已经取消了,如果取消之后再取消一次会崩溃的,因为cancel后对象已经没了。
刚开始Android不久,不知有没有更好的方法