android開發-定時器

Android中定時器主要有3個類,分別是Timer,TimerTask和Handler。也沒什麼難的,拿個例子看看就好。

    private Timer mWaitTime = null;
    private TimerTask mWaitTask = null;
    private Handler mWaitHandle = null;
    if(mWaitTime == null) {
                mWaitTime = new Timer();
            }
            mWaitTask = new TimerTask() {
                public void run() {
                    mWaitHandle.sendEmptyMessage(0);
                }
            };
            mWaitTime.schedule(mWaitTask, 20000); // 20s之後發送
            mWaitHandle = new Handler() {
                public void handleMessage(Message msg) {//分發消息
                    super.handleMessage(msg);
                    if (0 == msg.what ) {           
                            if(mReadyTimer != null) {
                                mReadyTimer.cancel();
                                mReadyTimer = null;
                            }
                            doing something。。。
                        }
                    }
                }
            };

簡單說下這個代碼就是過20s之後發送一個消息給handler,handler接到消息後做些事情,然後將定時器結束。所以這裏也可以讓定時器變成沒過一段時間做一個事情。像下面這樣。

    private Timer mReadyTimer;
    private TimerTask mReadyTask;
    private Handler mReadyHandler;
    private int mRecordReadyTime;
    if(mReadyTimer == null) {
                mReadyTimer = new Timer();
            }

            mReadyTask = new TimerTask() {
                public void run() {
                    mReadyHandler.sendEmptyMessage(0);      
                }
            };

            mReadyTimer.schedule(mReadyTask,1000);

            mReadyHandler = new Handler() {

                public void handleMessage(Message msg) {//分發消息
                    super.handleMessage(msg);
                    if (0 == msg.what ) {   
                        doing something...              
                        mRecordReadyTime --;                    
                        if(mRecordReadyTime < 0) {
                            if(mReadyTimer != null) {
                                mReadyTimer.cancel();
                                mReadyTimer = null;
                            }
                        }
                    }
                }
            };

顯然這裏就是沒過1s執行doing something一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章