gpt4 book ai didi

java - Android:在声明新计时器后调用 CountDownTimer 的 onFinish()

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:05 24 4
gpt4 key购买 nike

我正在编写一项 HIIT(高强度间歇训练) Activity ,我正在为其实现间隔计时器。 CountDownTimer 应该完成 5 分钟的热身,然后继续为 HIIT 锻炼计时。

 public class WarmUpActivity extends ActionBarActivity{

TextView Mode;
TextView Time;
int minutes;
long time_remaining;
boolean warmup_finished;
private CountDownTimer HIIT_Timer;


private void StartTimer() {
HIIT_Timer = new CountDownTimer(time_remaining, 1000) {
@Override
public void onTick(long millisUntilFinished) {
time_remaining = millisUntilFinished; //in case activity is paused or stopped
Time.setText(" " + (int)floor(millisUntilFinished / 60000) + ":" + ((millisUntilFinished / 1000) % 60));

if (warmup_finished == true) { //if we are in HIIT mode
if ((int)millisUntilFinished % 60000 == 0) { //every minute
if (Mode.getText() == "Low Intensity")
Mode.setText("High Intensity");
else
Mode.setText("Low Intensity");
}
}
}

@Override
public void onFinish() {
if (warmup_finished==false){
Mode.setText("Low Intensity");
warmup_finished = true;
HIIT_Method();
return;
}
else {
Completed_Method();
return;
}

}
}.start();
}


@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.hiit_layout);

Mode=(TextView) findViewById(R.id.mode);
Time=(TextView) findViewById(R.id.time);

warmup_finished=false;
Mode.setText("Warm-Up");
time_remaining=5*60000; //5 minutes when created

}

@Override
public void onStart(){

super.onStart();
StartTimer();
return;
}


private void HIIT_Method(){
minutes=getIntent().getIntExtra(SelectHIITDuration.MINUTES, 0);
time_remaining=minutes*60000;
StartTimer();
return;
}

private void Completed_Method(){
Mode.setText("Workout Completed");

}
}

当热身完成并且第一次调用 onFinish() 时,将调用 HIIT_Method,其中 HIIT 计时器应该以用户指定的持续时间启动。问题是,在使用 Start_Timer() 声明新计时器后,Completed_Method 会以某种方式被调用。它只能从 onFinish() 调用。为什么在声明新计时器后会调用 onFinish()

最佳答案

我们需要将对 startTimer 的调用从 onStart 移至 onCreate。

这里的问题是了解 Activity 的 Android 生命周期。比我有更好理解的人解释了一个非常好的解释here .

现在,根据我的理解,我们通常不会触及 onStart,直到我们开始担心服务绑定(bind)和数据库查询,但其他开发人员可能会有不同的想法。

关于 Activity 生命周期的官方 Android 文档可以在 here 找到。

关于java - Android:在声明新计时器后调用 CountDownTimer 的 onFinish(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com