【发布时间】:2015-02-20 13:51:42
【问题描述】:
我有一个倒数计时器,我有一个暂停它的按钮,但我需要当你点击按钮时,继续倒计时。我搜索但找不到与此相关的功能。怎么办?这是我的代码,我只设法重新启动它,但没有继续:
private TextView cuentaRegresiva;
private Button btnEmpezar;
private CountDownTimer countDownTimer;
private boolean timerHasStarted = false;
private long startTime = 30 * 1000;
private final long interval = 1 * 1000;
private long restante;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
btnEmpezar.setOnClickListener(iniciar);
}
OnClickListener iniciar=new OnClickListener() {
@Override
public void onClick(View arg0) {
if (!timerHasStarted && !pausado) {
countDownTimer.start();
timerHasStarted = true;
btnEmpezar.setText("Pause");
pausado=false;
}
else if(timerHasStarted && !pausado){
countDownTimer.cancel();
timerHasStarted = false;
btnEmpezar.setText("Restart");
pausado=true;
}
else if(!timerHasStarted && pausado){
countDownTimer2.start();
timerHasStarted = true;
btnEmpezar.setText("Pause");
pausado=false;
}
}
};
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
cuentaRegresiva.setText("Tiempo!");
}
@Override
public void onTick(long millisUntilFinished) {
cuentaRegresiva.setText("" + millisUntilFinished / 1000);
}
}
public class MyCountDownTimer2 extends CountDownTimer {
public MyCountDownTimer2(long restante, long interval) {
super(restante, interval);
}
@Override
public void onFinish() {
cuentaRegresiva.setText("Tiempo!");
}
@Override
public void onTick(long millisUntilFinished) {
cuentaRegresiva.setText("" + millisUntilFinished / 1000);
}
}
我曾想过将millisUntilFinished 放入一个变量,但没有奏效。无论如何,我想这条路已经接近了。
【问题讨论】:
-
文档不太清楚是否可以在 cancel() 之后再次使用 start()。我猜它不起作用。尽管您可以尝试在计时器运行时存储 millisUntilFinished 值。然后一旦需要重新启动计时器,创建新的计时器对象并将此值用作持续时间。
-
简单取消并从上次倒计时重新启动计时器或将计时器暂停状态传递给计时器类并继续检查 timertask 并跳过更新。恢复时重置状态。
标签: java android countdown countdowntimer continue