Java Android:onFinish()用于在声明新计时器后调用的倒计时计时器
我正在编写一个HIIT(高强度间歇训练)活动,我正在为其实施一个间歇计时器。倒计时器应完成5分钟的热身,然后继续计时HIIT训练Java Android:onFinish()用于在声明新计时器后调用的倒计时计时器,java,android,countdowntimer,Java,Android,Countdowntimer,我正在编写一个HIIT(高强度间歇训练)活动,我正在为其实施一个间歇计时器。倒计时器应完成5分钟的热身,然后继续计时HIIT训练 public class WarmUpActivity extends ActionBarActivity{ TextView Mode; TextView Time; int minutes; long time_remaining; boolean warmup_finished; private CountDo
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\u方法
,其中HIIT计时器应以用户指定的持续时间开始。问题是,在使用Start\u timer()
声明新计时器后,会以某种方式调用Completed\u方法。只能从onFinish()
调用它。为什么在我声明了一个新计时器后调用了onFinish()
?我们需要将对startTimer的调用从onStart移到onCreate
这里的问题是理解活动的Android生命周期。一个比我理解得更好的人做了一个很好的解释
现在据我所知,在我们开始担心服务绑定和数据库查询之前,我们通常不会涉及onStart,但其他开发人员可能会有不同的想法
可以找到有关活动生命周期的官方android文档您是否尝试过在oncreate而不是onstart中调用初始启动计时器?不确定这是否能解决任何问题。谢谢。这起作用了。我的新计时器启动时没有转到已完成的方法()。我不知道为什么会这样。如果您能给我一个解释,我将不胜感激,因为我是android开发的新手。请发送回复,让我知道这是否令人满意。