Android 定时器Timer

定义一个定时器及定义一个TimerTask处理handler事件

Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        @Override
         public void run() {
                                Thread thread = new Thread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Message message = new Message();
                                        message.what = 2;
                                        mHandler.sendMessage(message);
                                    }
                                });
                                thread.start();
                            }
    };     

##开启一个定时器

 timer.schedule(task,200,10000);

说明:
第一个参数是定时器要做的任务(task),这里是处理handler 消息
第二参数是什么事件做这个任务(task),这里写的是200ms,即200ms后timer开始处理任务。
第三个参数是执行任务的时间间隔,即每隔10s执行一次任务(task),如果不写的话,定时器只执行一次任务。

定时器的请求周期

定时器如果不销毁的话会一直执行,但定时器一直执行的话,那么程序很可能就会崩溃所以说定时器用完要及时的关闭
定时器的开启一般会写在onStart里面
定时器的销毁会写在onStop里面

销毁定时器

timer.cancel();

离开本界面的时候就执行这句话那么定时器就不会在执行了,进入本界面时在onStart中执行定时器那么就开启了定时器。
注意: timer的开启和销毁不一定定义在onStart()或onDestroy()方法中。

一个定时器代码

 touchtimer = new Timer();
                        touchtimer.schedule(new TimerTask() {
                            @Override
                            public void run() {
                                Thread thread = new Thread(new Runnable() { //定义一个线程
                                    @Override
                                    public void run() {
                                        Message message = new Message();//定义一个消息message
                                        message.what = 2;                 //自定义一个消息的what属性(区分不同消息)
                                        mHandler.sendMessage(message); //发送消息
                                    }
                                });
                                thread.start();                  //开启线程
                            }
                        },300,200);
 public Handler mHandler = new Handler() {       //定义一个Handler并来处理消息
        public void handleMessage(Message msg) { //接受并处理线程发送来的消息
            switch (msg.what) {                 //识别线程发送的消息的what
                case 2:                         //根据what执行不同的事件方法,这里只定义里一个what
                   执行定义的事件或事件处理方法;   
                    break;
                default:
                    break;
            }
            super.handleMessage(msg);
        };
        protected void onDestroy() {                 //销毁timer
            super.onDestroy();
            timer.cancel();
           } 
发布了11 篇原创文章 · 获赞 2 · 访问量 1394

猜你喜欢

转载自blog.csdn.net/mo_ji63/article/details/97624812