简单实现Android倒计时功能

来源:互联网 发布:2k18欧文捏脸数据 编辑:程序博客网 时间:2024/05/17 21:51

这里列举了一个简单实现倒计时的例子Timer+Handler。

首先创建一个Timer对象,并设立一个倒计时开始时间recLen

    Timer timer = new Timer();    private int recLen = 120;


一个Timer是可以开启很多任务的,每个任务都用一个TimerTask表示。因此需要创建一个自定义的TimerTask用来实现自己的需求,更重要的是不用销毁Timer从而可以创建多个TimerTask。

    class MyTimerTask extends TimerTask{        @Override        public void run() {            recLen--;            Message message = new Message();            message.what = 1;            handler.sendMessage(message);        }    }


倒计时开始,我们用Hanlder进行UI更新

    final Handler handler = new Handler(){        @Override        public void handleMessage(Message msg){            switch (msg.what) {                case 1:                    codeBtn.setText(recLen+"s");                    if(recLen < 0){                        if (myTimerTask!=null) {                            myTimerTask.cancel();                            myTimerTask = null;                        }                        isWaitCode = false;                    }else{                        isWaitCode = true;                    }                    showUI();            }        }    };

在代码相应位置调用计时器开启

myTimerTask = new MyTimerTask();timer.schedule(myTimerTask, 1000, 1000); 


这里需要注意的是,当上述代码中myTimerTask.cancel()  改为 timber.cancel(),那么再次调用timer的schedule方法会报异常

java.lang.IllegalStateException: TimerTask is scheduled already
是因为Timer已经被cancel,不能再调用schedule方法了,我们可以用TimerTask的cancel方法,这样只是关闭了一个task而不会关闭掉整个Timer。






原创粉丝点击