任務描述:
做音樂播放器的時候,需要實現一個定時停止播放的功能
所以需要實現倒計時,事件到了後通知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