Хороший и простой способ создать Pause / Resume для вашего CountDownTimer - создать отдельный метод для вашего таймера. start , pause и resume as следующим образом:
public void timerStart(long timeLengthMilli) {
timer = new CountDownTimer(timeLengthMilli, 1000) {
@Override
public void onTick(long milliTillFinish) {
milliLeft=milliTillFinish;
min = (milliTillFinish/(1000*60));
sec = ((milliTillFinish/1000)-min*60);
clock.setText(Long.toString(min)+":"+Long.toString(sec));
Log.i("Tick", "Tock");
}
}
timer.start();
Параметр timerStart имеет длинный параметр, так как он будет использоваться методом resume () ниже. Не забудьте сохранить свой milliTillFinished (выше как milliLeft), чтобы вы могли отправить его с помощью метода resume () . Способы паузы и возобновления ниже соответственно:
public void timerPause() {
timer.cancel();
}
private void timerResume() {
Log.i("min", Long.toString(min));
Log.i("Sec", Long.toString(sec));
timerStart(milliLeft);
}
Вот код для кнопки FYI:
startPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(startPause.getText().equals("Start")){
Log.i("Started", startPause.getText().toString());
startPause.setText("Pause");
timerStart(15*1000);
} else if (startPause.getText().equals("Pause")){
Log.i("Paused", startPause.getText().toString());
startPause.setText("Resume");
timerPause();
} else if (startPause.getText().equals("Resume")){
startPause.setText("Pause");
timerResume();
}