任務描述:
做音樂播放器的時候,需要實作一個定時停止播放的功能
是以需要實作倒計時,事件到了後通知service暫停音樂播放
解決方案:
使用了CountDownTimer,其構造函數如下:
CountDownTimer(long millisInFuture, long countDownInterval)
- millisInFuture是倒計時的總時間,機關是ms
- countDownInterval是回調public void onTick(long millisUntilFinished)方法的事件間隔,此方法的參數millisUntilFinished是設定的倒計時剩餘時間
- 此外還有一個回調方法public void onFinish()是倒計時結束的時候調用的
- 啟動定時器:countDownTimer.start();
- 不再使用時記得撤銷定時器:countDownTimer.cancel();
Code:
//倒計時任務
CountDownTimer countDownTimer = new CountDownTimer(input_time * 60 * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
rest_of_time = (double) millisUntilFinished / 1000.0 / 60.0;
}
@Override
public void onFinish() {
sendBroadcastOnCommand(MusicService.COMMAND_PAUSE);
}
};
countDownTimer.start();
擴充:
實作倒計時還可以使用其他方法
-
使用Timer
schedule(TimerTask task, Date firstTime, long period)
三個參數分别是:
要執行的任務
第一次執行時延遲的時間
以後每次執行的周期
三個參數可以少寫,Timer類内部有重載
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//doSomething
}
}, 1000);
- 使用handler,它可以延遲一段時間後發送message