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

<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() {
		@Override
		public void run() {
			runOnUiThread(new Runnable() { // UI thread
				@Override
				public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值