====== 在 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);
// 若要取消可以寫一個判斷在這決定是否啟動下一次即可
}
};
}