欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Android中handler倒计时

程序员文章站 2023-02-10 22:47:19
import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message; import java.util.Timer;import java.util.Ti ......

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();
}
}