使用者工具

網站工具


mobile:android:開發筆記:android_timer_的使用

在 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);
      // 若要取消可以寫一個判斷在這決定是否啟動下一次即可
    }
  };
}
mobile/android/開發筆記/android_timer_的使用.txt · 上一次變更: 2019/11/16 08:12 (外部編輯)