关于Timer写在BaseActivity里面 重复new 报错的问题

来源:互联网 发布:js防水涂料施工工艺 编辑:程序博客网 时间:2024/06/06 08:40

<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; background-color: rgb(245, 245, 245);">有一个需求。希望每个界面都可以设计一个倒计时器,几分钟用户没有操作,就自动返回。</span>

但是我在写的时候,发现,这个Timer写在BaseActivity里面老是程序自动挂掉,发现这个倒计时貌似不能够每次重复的去new。

然后老大给了我一个思路就是直接把这个timer设置成一个静态, 整个程序共用一个Timer ,然后我貌似就只需要重置他的时间就好了。

private static int time = 10;private static Timer timer  ;

if (timer ==null ) {  timer =  new Timer();  timer.schedule(task, 1000, 1000);}


TimerTask task = new TimerTask() {@Overridepublic void run() {runOnUiThread(new Runnable() { // UI thread@Overridepublic void run() {  time--;  Message msg = new Message();   msg.what = 1;       handler.sendMessage(msg); }});}};Handler handler = new Handler(){public void handleMessage(Message msg) {Log.i("msg.what", msg.what+"");if (msg.what == 1) {Log.i("time", time+"");if (time < 0) {Log.i("time", time+"");timer.cancel();timer=null;//指出对象是否是MainActivity类的一个实例if (gContext instanceof MainActivity == true) {exitMain();}}}};};


 项目里面的 BaseActivity  我用handle传递参数改变UI界面  用来返回主界。

看来看起来并不是很复杂。。但是当时确实困扰了我挺久的。所以做个笔记。


0 0