我需要找到一种方法来阻止多个定时器的发生。我必须有一个带有可选择的倒数计时器间隔的弹出菜单。我找到了一个适用于创建计时器的解决方案。但是,如果一个人正在进行,并且您从菜单中选择了另一个,他们将一起运行。在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。

+0

我不明白这个问题。取消方法不适合你?据我所知,你只需要取消当前计时器,如果它目前正在运行。是吗? –

+0

问题是我没有使用单独的取消按钮。我只使用弹出菜单的按钮。如果你从菜单中选择15分钟,它工作正常。如果你再次点击菜单并选择10分钟,现在你有两个计时器试图同时运行。我认为在新车开始前会有一个简单的检查来关闭旧车,但可能不会。在倒数计时器中设定时间很容易。它每次重置。当我尝试做出可选的持续时间时,我遇到了问题。 –

+0

因此,您需要:点击第一个菜单项 - >启动计时器15分钟。之后,如果点击2菜单项 - > 15分钟取消第一个定时器,并启动定时器10分钟。我是对的? –

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐