我正在尝试在应用上设置计时器。我正在使用下面的代码,它适用于创建。但是,如果第二次按下按钮,秒钟开始变得混乱并轻弹一下。 有任何想法吗?
package com.example.android.courtcounter;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
public int counter;
TextView timer;
Button button;
private static final String FORMAT = "%02d:%02d";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
timer = (TextView) findViewById(R.id.timer);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View V) {
new CountDownTimer(2400000, 1000) {
public void onTick(long millisUntilFinished) {
timer.setText (String.format(FORMAT, TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
}
public void onFinish() {
timer.setText("done!");
}
}.start();
}
});
}
}
答案 0 :(得分:0)
CountDownTimer可能会在旧的自身实例上闪烁。尝试在重新开始倒计时之前调用cancel()。
答案 1 :(得分:0)
在整个CountDownTimer
中管理Activity
的单个实例。你在同一个Activity
上有很多实例,它可能会变得混乱。首先在onCreate
之外,但在课堂内首先将其声明为
CountDownTimer countDownTimer;
然后在Button
的onClickListener onClick
方法中执行此操作:
if(countDownTimer!=null){
countDownTimer.cancel();
}
countDownTimer= new CountDownTimer(2400000, 1000) {
public void onTick(long millisUntilFinished) {
timer.setText (String.format(FORMAT, TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
}
public void onFinish() {
timer.setText("done!");
}
}.start();
从这里开始,您将只管理该类的一个实例,而不是在每次单击按钮时创建更多实例。