Erlo

Android中handler倒计时

时间:2019-02-12 11:01   阅读:27次   来源:博客园页面报错

点赞 打赏

×打赏

支付宝

微信


import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import java.util.Timer;
import java.util.TimerTask;

public class **Activity extends BaseActivity{
private int time;
private Timer mTimer;

// 使用handler实现子线程发送消息到主线程
@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
time = (int)msg.obj;
if (time<5){
timerTask();
}else {
Intent intent = new Intent(FlashScreenActivity.this,MainActivity.class);
startActivity(intent);
mTimer.cancel();// 停止倒计时
finish();// 用于闪屏页时关闭此activity,在用户按返回按钮时,不会再回到此页面
}
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
  timerTask();// 调用计时器方法
}
private void timerTask() {
mTimer = new Timer();
TimerTask mTask = new TimerTask() {
@Override
public void run() {
time++;
Message message = new Message();
message.obj = time;
handler.sendMessage(message);
}
};
// 第一个参数"new MyTask(event.getServletContext())": 是 TimerTask 类,在包:import java.util.TimerTask .
// 使用者要继承该类,并实现 public void run() 方法,因为 TimerTask 类实现了 Runnable 接口。
// 第二个参数"0"的意思是:(0就表示无延迟)
// 制定timer定时器第一次调用run方法的时间,0表示不指时间,立刻调用。一般这个参数指定的时间格式是:yyyy-MM-dd HH:mm:ss
mTimer.schedule(mTask,1000);
}
#zs#*
* 防止内存泄漏(如果不停止,倒计时会在程序内一直执行,知道进程消失)
* 销毁时释放资源
#fzs#
@Override
protected void onDestroy() {
super.onDestroy();
mTimer.cancel();
finish();
}
}

下一篇:异常处理器详解 Java多线程异常处理机制 多线程中篇...

评论留言

还没有评论留言,赶紧来抢楼吧~~

Erlo大厅()

* 这里是“吐槽厅”,所有人可看,只保留当天信息。

  • Erlo.vip2019-02-17 18:52:45Hello、欢迎使用吐槽厅,这里是个吐槽的地方。
  • 首页 笔记分享 Erlo动态 案例展示 搜索
    鼠标试试
    返回顶部