====== 在 Android 使用 Timer ====== 有時必須用到簡單的計時排程功能, 以下兩個小範例示範實作 1000 毫秒的 Timer, 使用的方法不同,各有好處 後記: Timer 不是在 UI Thread, 在 Android 上若要修改 UI 就必須透過 Handler 的方式或其他方法嘍… ===== 比較直觀的 Timer ===== import java.util.*; public class MainActivity extends Activity { Timer timer = new Timer(true); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); timer.schedule(new timerTask(), 1000, 1000); } public class timerTask extends TimerTask { public void run() { } }; } 此外需注意的是當我們要停止這個 Timer 時,我們可以使用以下兩行指令任一種 timer.cancel(); timer.purge(); 這是有差別的,cancel 一用下去等於這個 Timer 整個廢掉, cancel 後再做 schedule 等動作也不會有任何反應,必須重新 new 一個 Timer 而 purge 是取消此 Timer 中所有的 task 動作,後續還可以重新啟動。 ===== 利用 Handler 做同樣的事 ===== import android.os.Handler; public class MainActivity extends Activity { public class MainActivity extends Activity private ing m_nTime = 0; private Handler mHandlerTime = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mHandlerTime.postDelayed(timerRun, 1000); } @Override public void onDestroy() { mHandlerTime.removeCallbacks(timerRun); super.onDestroy(); } private final Runnable timerRun = new Runnable() { public void run() { ++m_nTime; // 經過的秒數 + 1 mHandlerTime.postDelayed(this, 1000); // 若要取消可以寫一個判斷在這決定是否啟動下一次即可 } }; }