Android延时执行Timer类的使用

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

猜你喜欢

转载自blog.csdn.net/ymtianyu/article/details/111246190