Android:在声明新的一个之后调用的CountDownTimer的onFinish()

时间:2015-05-28 16:27:24

标签: java android countdowntimer

我正在编写HIIT(高强度间隔训练)活动,我正在实施间隔计时器。 CountDownTimer应该完成5分钟的热身,然后继续进行HIIT锻炼。

$this->otherDb = $this->load->database('mysql://username:password@hostname:9090/database?dbprefix=pre_&pconnect=FALSE&db_debug=TRUE',TRUE);

当预热完成并且第一次调用 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计时器应该以用户指定的持续时间开始。问题是,在使用HIIT_Method声明新计时器之后,会以某种方式调用Start_Timer()。它只能从Completed_Method调用。为什么在我声明一个新的计时器后调用onFinish()

1 个答案:

答案 0 :(得分:0)

我们需要将您的调用从onStart调用startTimer到onCreate。

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

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

可以找到有关活动生命周期的官方Android文档here