package com.ray.test; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; public class TestTimer extends Activity { Timer timer = new Timer(); Handler handler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 1: setTitle("hear me?"); break; } super.handleMessage(msg); } }; TimerTask task = new TimerTask(){ public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer.schedule(task, 10000); } }
這樣可以執行UI動作:
package com.ray.test; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; public class TestTimer extends Activity { Timer timer = new Timer(); TimerTask task = new TimerTask(){ public void run() { runOnUiThread(new Runnable(){ @Override public void run() { setTitle("hear me?"); }}); } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); timer.schedule(task, 10000); } }
//退出計時器 task.cancel(); timer.cancel();
//以下是幾種調度task的方法: //time為Date類型:在指定時間執行一次。 timer.schedule(task, time); //firstTime為Date類型,period為long,表示從firstTime時刻開始,每隔period毫秒執行一次。 timer.schedule(task, firstTime, period); //delay 為long類型:從現在起過delay毫秒執行一次。 timer.schedule(task, delay); //delay為long,period為long:從現在起過delay毫秒以后,每隔period毫秒執行一次。 timer.schedule(task, delay, period);
timer.schedule(new MyTask(),long time1,long timer2); 這個方法有三個參數: 第一個參數,是 TimerTask 類,在包:import java.util.TimerTask .使用者要繼承該類,並實現 public void run() 方法,因為 TimerTask 類 實現了 Runnable 接口。 第二個參數的意思是,當你調用該方法后,該方法必然會調用 TimerTask 類 TimerTask 類 中的 run() 方法,這個參數就是這兩者之間的差值,轉換成漢語的意思就是說,用戶調用 schedule() 方法后,要等待這么長的時間才可以第一次執行 run() 方法。 第三個參數的意思就是,第一次調用之后,從第二次開始每隔多長的時間調用一次 run() 方法。