<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界面 用来返回主界。
看来看起来并不是很复杂。。但是当时确实困扰了我挺久的。所以做个笔记。