J'utilise CountDownTimer pour atteindre 5 secondes compte à rebours, ce qui suit est mon code:J'utilise CountDownTimer pour réaliser un compte à rebours de 5 secondes, mais le temps est mal, pourquoi?
public class CountDownTimerActivity extends AppCompatActivity {
Button button;
MyCountTimer timer;
boolean isTick = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_count_down_timer);
timer = new MyCountTimer(5*1000,1000);
button = (Button)findViewById(R.id.countdown);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!isTick){
timer.start();
isTick = !isTick;
}
}
});
}
class MyCountTimer extends CountDownTimer{
public MyCountTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long l) {
button.setText(l/1000+"秒");
}
@Override
public void onFinish() {
button.setText("Sms Verification Code");
isTick = false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();
isTick = false;
}
}
Mais je trouve un phénomène étrange, par exemple, je cliquez d'abord sur le bouton, il affiche 4,3 , 2,1 et parfois je clique de nouveau sur le bouton, peut-être 5,3,2,1 ou 5,4,2,1.Je ne connais pas la raison, je m'attendais à un résultat de 5,4,3,2, 1. Qui peut m'aider?
Pourquoi avez-vous mis isTick = isTick si elle est déjà faux! Peut-être que je suis difficile mais cela semble étrange. En outre, le fait que vous utilisiez deux méthodes différentes pour définir isTick false ne facilite pas la lecture. – Phil3992