关于Timer的注意问题

在这里并不想说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不久,不知有没有更好的方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值