Я создаю игру и помещаю таймер в метод onCreate, чтобы отображать время для пользователя и выполнять действие, когда оно достигает 0. Мой способ работает правильно, но поскольку я написал его в onCreate, время продолжает отсчитываться, и если я поворачиваю экран и т. д. он сбрасывает секунды таймера. Я знаю, почему это происходит, но я не смог найти способ остановить это, когда приложение приостановлено, и заставить его продолжаться с того места, где оно осталось, когда приложение продолжается. Вот мой код
new CountDownTimer(15000, 1000) {
public void onTick(long millisUntilFinished) {
question.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
Должен ли я сохранять milisUntilFinished в saveInstanceState и запускать таймер в зависимости от saveInstanceState или есть более простое решение
Изменить: поэтому я обновил свой код, чтобы отразить то, что я спросил. Таким образом, я могу сохранить последнее состояние таймера при повороте телефона, но таймер все равно не останавливается, когда я открываю меню (приостанавливаю работу приложения).
if(savedInstanceState!=null){
seconds = savedInstanceState.getInt("seconds");
new CountDownTimer(seconds * 1000, 1000) {
public void onTick(long millisUntilFinished) {
seconds = (int) millisUntilFinished;
question.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
}else {
new CountDownTimer(15000, 1000) {
public void onTick(long millisUntilFinished) {
seconds = (int) millisUntilFinished;
question.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
question.setText("done!");
Intent i2 = new Intent(getApplicationContext(), CategoryActivity.class);
startActivity(i2);
}
}.start();
}