0

Я пытаюсь показать пользователю CountDownTimer, который начинает снижаться сразу же, когда пользователь нажимает кнопку «СТАРТ», но если я закрываю операцию и снова ее открываю, CountDownTimer получает сбросить и снова начать.CountDownTimer перезапускается после закрытия и открытия приложения

Я использовал это link, чтобы узнать, как установить CountDownTimer.

Вот как я закодировал:

new CountDownTimer(ms, 1000) { 

      public void onTick(long millisUntilFinished) { 
       String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished), 
         TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % TimeUnit.HOURS.toMinutes(1), 
         TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % TimeUnit.MINUTES.toSeconds(1)); 
       holder.availableFor.setText(hms); 
      } 

      public void onFinish() { 
       holder.linearLayout.setVisibility(View.GONE); 
       holder.firebaseDatabase.child(itemID).setValue(null); 
       holder.geoFireReference.child(itemID).setValue(null); 
      } 
     }.start(); 

Пожалуйста, дайте мне знать, как сохранить таймер происходит, даже если пользователь закрывает приложение.

ответ

1

Как я понимаю, вы создаете этот таймер в методе onClick. Попробуйте создать какой-то глобальной переменной

CountDownTimer timer 

После этого создать в OnClick, как вы делаете.

и OnPause:

if (timer != null) { 
timer.cancel 

}

0

Вы должны использовать класс обслуживания here ссылка, которая может быть вам помочь.

-1

Вам необходимо сохранить данные таймера в какой-либо глобальной области, поэтому таймер после установки не будет изменен с жизненным циклом активности.

лучшие практики предполагают, использование службы, как ответить @ shahid17june

также, если вы не хотите использовать это, или переменная установки для хранения counttimerdata в классе приложения (глобальные данные), и обновлять его соответствующим образом.

Смежные вопросы