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();
           } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章