Android中handler倒计时

2019-02-17 01:49:11来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折


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);
}
/**
* 防止内存泄漏(如果不停止,倒计时会在程序内一直执行,知道进程消失)
* 销毁时释放资源
*/
@Override
protected void onDestroy() {
super.onDestroy();
mTimer.cancel();
finish();
}
}

原文链接:https://www.cnblogs.com/Nigeria/p/10364257.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

下一篇:数据结构基础