Android 計時器Timer用法
阿新 • • 發佈:2018-12-08
1.計時器Timer基本用法,完成倒計時
public class TimeActivity extends AppCompatActivity { private Timer timer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); timer = new Timer(true); timer.schedule(timerTask, 1000, 1000); //延時1000ms後執行,1000ms執行一次 } TimerTask timerTask = new TimerTask() { public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what==1){ //回到主執行緒執行結束操作 Log.e("=====", "結束計時"); } } }; }
程式碼很簡單,先建立了 handler ,執行在主執行緒的操作;其次建立了 TimerTask ,在裡面執行傳送訊息的操作;最後,在 onCreate() 方法中初始化 Timer 物件並開始開始執行方法;
2.計時器Timer基本用法,打斷倒計時並重新開始計時
public class TimeActivity extends AppCompatActivity { private Timer mTimer; //計時器,每1秒執行一次任務 private MyTimerTask mTimerTask; //計時任務,判斷是否未操作時間到達3s private long mLastActionTime; //上一次操作時間 private Button button1;//重新開始計時按鈕 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = findViewById(R.id.button1); //重新計時按鈕 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mLastActionTime = System.currentTimeMillis(); } }); //開始計時 startTimer(); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { //回到主執行緒執行結束操作 Log.e("=====", "結束計時"); } } }; private class MyTimerTask extends TimerTask { @Override public void run() { //3s未操作,則結束計時 if (System.currentTimeMillis() - mLastActionTime > 3000) { //結束計時 removeTimer(); // 停止計時任務 stopTimer(); } } } //開始計時 private void startTimer() { mTimer = new Timer(true); mTimerTask = new MyTimerTask(); mTimer.schedule(mTimerTask, 0, 1000); //延時1000ms後執行,1000ms檢查一次 // 初始化上次操作時間為登入成功的時間 mLastActionTime = System.currentTimeMillis(); } //倒計時完畢的操作 private void removeTimer() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } // 停止計時任務 private void stopTimer() { mTimer.cancel(); } }
上面程式碼也很簡單,主要有:
- 計時器:每一秒都會執行一次計時器
- 計時任務:主要是判斷時間有沒有超過三秒,超過三秒做操作
- 重新計時按鈕:使計時器重新開始計時
結合上面的內容看程式碼應該非常簡單了~~