Android Timer

在iOS中timer執行時就是直接new一個Thread來執行,但在Android中似乎有別的方式可以選擇

宣告Timer出來,並給予啟動時間,如下面例子timer.schedule(線程名稱, activity停頓幾秒後開始執行, 每隔幾秒執行一次),這部份直接放在onCreate內
Timer timer = new Timer(true);
timer.schedule( timerTask, 2000, 3000); //(taskName, wait(ms), repet(ms))
//timer.cancel(); //stop timer


timer.schedule裡面也一樣有相當多的method,如上面所寫的那是不斷去執行直到你自己去關閉,那如果只要執行一次就使用
Timer timer = new Timer(true);
timer.schedule( timerTask, 2000); //(線程名稱, 開始後多久執行(ms))
//timer.cancel(); //stop timer


但這裡面可以用的東西也是太多了,我這只有2k的大腦記不住這麼多,補全給他按下去就對了,慢慢挑慢慢選


開始執行Timer的線程,其實也可以直接寫在todo something這邊,但是在線程中作這些實在有點不保險,常常會有意想不到的收穫,所以在這還是會推薦在handler內來作。這部份直接放在activity內
/* timer task */
TimerTask timerTask = new TimerTask(){
public void run() {
//todo something
handler.sendEmptyMessage(10);
}
};


由於用上了handler就必須在activity內再加上要執行的部份,如上面的task內所傳送一個數字過去(就是"10")所以在下方handler內的msg.what所印出來的就是"10",只要寫下"if(msg.what == 10)"要作啥事情即可,以此類推就可以有更多的變化
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
//TODO something
System.out.println("msg = "+msg.what);
if(msg.what == 10){
//
}
}
};


相關連結
Android Developers
Android Developers - Timer
Android Developers - TimerTask
Android Developers - Handler

沒有留言:

張貼留言