![](/img/trans.png)
[英]Creating multiple countdown timers with a for-loop Android Kotlin
[英]Stopping multiple countdown timers in 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。
private CounterClass timer;
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.countdownMenu1:
startTimer(10000, 1000);
return true;
case R.id.countdownMenu2:
startTimer(15000, 1000);
return true;
default:
return false;
}
}
public void startTimer(long millisInFuture, long countDownInterval) {
cancelTimer();
timer = new CounterClass(millisInFuture, countDownInterval);
timer.start();
}
private void cancelTimer() {
if (timer != null) {
timer.cancel();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.