我知道有很多线程都有相同的主题,但我不想使用一些我不理解的随机代码。
这是我在Android Studio中暂停和继续CountDownTimer的当前代码:
public void getReadyTimer(long time){
time = 12000;
progress=0;
circularProgressBar.setProgress(0);
//tvInfo.setText("Get Ready!");
timer= new CountDownTimer(time, 1000) {
public void onTick(long millisUntilFinished) {
milliLeft = millisUntilFinished;
sec = ((millisUntilFinished-1000)/1000);
tvTimer.setText(Long.toString(sec));
//tvTimer.setText((millisUntilFinished-1000) / 1000 + "");
progress++;
int animationDuration = 1500; // 2500ms = 2,5s
circularProgressBar.setProgressWithAnimation((int)progress*100/(11000/1000), animationDuration);
circularProgressBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (t== 0) {
pauseTimer();
t =1 ;
tvInfo.setText(Integer.toString(t));
}else{
resumeTimer();
t = 0;
tvInfo.setText(Integer.toString(t));
}
}
});
}
private void pauseTimer(){
timer.cancel();
}
private void resumeTimer(){
Log.i("sec", Long.toString(sec));
milliLeft = sec*1000;
getReadyTimer(milliLeft);
}
public void onFinish() {
if (circularProgressBar.getProgress() == 100) {
startTimer();
}
}
}.start();
}
然而它无法正常工作。问题是,Timer(暂停后)再次以值“time”开始而不是“millileft”应该是。我感谢各种帮助。
答案 0 :(得分:0)
您正在将传递的参数milliLeft
的值重新分配给12000
。要解决此问题,您可以创建两种方法。一个接受参数而另一个没有。 e.g。
public void getReadyTimer() {
this.getReaderTimer(12000L); // default value
}
public void getReadyTimer(long time) {}
在参数化方法中删除
的赋值 time = 12000;
答案 1 :(得分:0)
您不应该致电timer.cancel()
暂停计时器。然后你可以调用timer.resume()再次启动它。没有必要使用这么“复杂”的逻辑。
答案 2 :(得分:0)
使用此功能,可以帮助您
全局变量
private CountDownTimer timer;
long time = 12000;
<强>定时器强>
private void startTimer(long timerStartFrom) {
timer = new CountDownTimer(timerStartFrom, 1000) {
@Override
public void onTick(long millisUntilFinished) {
//updating the global variable
time = millisUntilFinished;
}
@Override
public void onFinish() {
}
}.start();
}
在初始(onCreate)
如何开始
使用
启动计时器 startTimer(time)
因为时间有初始值// 12000
如何暂停
然后您可以使用timer
timer.cancel()
如何恢复
当您想要恢复时,只需通过调用startTimer(time)
启动计时器,因为计时器具有更新的值。
它会做什么 它将在您停止计时器的前一次启动计时器
简单,快乐编码:)