Android定时控制类一般使用Timer即可
初使化Timer类
Timer timer = new Timer();
执行延时事件
timer.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
}, 6000, 2000); //时间单位为毫秒
- timerTask 第一个参数为要执行的事件
- 第二个参数为延迟多久执行
- 第三个参数为每次执行的间隔时间,可选
结束Timer进程
一个Timer类实例可以执行多个TimerTask事件,但一旦运行起来便会一直执行下去,直到timer.cancel()事件,结束整个timer进程。
timer.cancel();
完整代码
TimerTask
//外部初使化Timer 和 TimerTask 以便在Handler中结束时间线程
private Timer loadingTimer;
private TimerTask loadingTask;
private void endLoading(){
if(loadingTimer == null) loadingTimer = new Timer();
if(loadingTask == null) loadingTask = new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
};
//两个参数,一个是执行事件,一个是延时多久执行。
loadingTimer.schedule(loadingTask, 300);
}
Handler
TimerTask 无法更新主线程上的UI控件内容,只能借用Handler在不同线程中传递信息。
private final Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message message) {
switch (message.what) {
case 0:
mView.mvAvloading.hide(); //更新主界面UIK
//释放TimerTask,否则会一直执行下去
loadingTask.cancel();
loadingTask = null;
//释放Timer,结束当前进程
loadingTimer.cancel(); //停止Timer
loadingTimer = null;
break;
default:
break;
}
return true;
}
});