我需要找到一種方法來阻止多個定時器的發生。我必須有一個帶有可選擇的倒數計時器間隔的彈出菜單。我找到了一個適用於創建計時器的解決方案。但是,如果一個人正在進行,並且您從菜單中選擇了另一個,他們將一起運行。在Android中停止多個倒計時器定時器
我需要找出要添加的代碼,以便當第二個倒計時選項被選中時,第一個倒數計時器停止。
...
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.countdownMenu1:
CounterClass timer = new CounterClass(10000, 1000);
timer.start();
return true;
case R.id.countdownMenu2:
timer = new CounterClass(15000, 1000);
timer.start();
return true;
default:
return false;
}
}
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(hms);
textViewTime.setText(hms);
}
@Override
public void onFinish() {
// textViewTime.setText("Completed.");
System.exit(0);
}
...
從菜單中選擇每一次的效果很好,只要你不再嘗試再次嘗試。然後我顯示兩個倒數時間,並且首先執行onFinish。
我不明白這個問題。取消方法不適合你?據我所知,你只需要取消當前計時器,如果它目前正在運行。是嗎? – kolombo
問題是我沒有使用單獨的取消按鈕。我只使用彈出菜單的按鈕。如果你從菜單中選擇15分鐘,它工作正常。如果你再次點擊菜單並選擇10分鐘,現在你有兩個計時器試圖同時運行。我認爲在新車開始前會有一個簡單的檢查來關閉舊車,但可能不會。在倒數計時器中設定時間很容易。它每次重置。當我嘗試做出可選的持續時間時,我遇到了問題。 –
因此,您需要:點擊第一個菜單項 - >啓動計時器15分鐘。之後,如果點擊2菜單項 - > 15分鐘取消第一個定時器,並啓動定時器10分鐘。我是對的? – kolombo