我找到了很多关于如何在Android中暂停倒计时器的示例,但每个示例都使用了多个按钮(暂停,恢复和取消)。
我想要一个按钮,当我按下它时,计时器启动,然后当我再次按下它时会暂停(取消原始计时器,捕获计时器值)并在再次点击时恢复(从暂停中获取捕获的时间)开始一个新的反击者。)
有没有人有一个如何实现这个目标的例子?我已经在按钮的onClick侦听器中尝试了if else循环。我有一个非常粗糙的半工作的例子;
if (gameOn == 1) {
if((clkOnTimerBtn % 2)==0) {
isPaused = true; // PAUSE COUNTDOWN TIMER
resumeCountDownTimer(view, "pause");
} else { // RESUME COUNTDOWN TIMER
resumeCountDownTimer(view, "resume");
}
上面的问题是这是在按钮onclick监听器中执行的,所以如果在我的resumeCountDownTimer中创建了一个新的CountDownTimer,则以后无法访问定时器以取消它(暂停)。我也试图寻找一种取消所有倒计时器的方法,如果可能的话我会弄乱,但我找不到任何这样做的例子或参考,因为这至少会得到理想的行为,即使它不是最优雅的方式。
答案 0 :(得分:1)
如果我理解正确的话,这样的事情应该有用。
public class MainActivity extends AppCompatActivity {
CountDownTimer countDownTimer;
long duration = 100000; //This is the initial time,
long millisecondsLeft = 100000; // This is the time left. At the start it equales the duration.
boolean isCountDownTimerActive = false;
Button startButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.startStop);
final TextView timeLeft = (TextView) findViewById(R.id.timeLeft);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isCountDownTimerActive) {
if (countDownTimer != null)
countDownTimer.cancel();
isCountDownTimerActive = false;
} else {
countDownTimer = new CountDownTimer(millisecondsLeft, 1000) {
@Override
public void onTick(long l) {
millisecondsLeft = l;
timeLeft.setText(" " + l);
}
@Override
public void onFinish() {
}
};
isCountDownTimerActive = true;
countDownTimer.start();
}
}
});
}
}