Я использую таймер обратного отсчета, который обновляет мой индикатор выполнения, который уменьшается от 100 (полный) до 0 (пустой), но когда приложение приостановлено, вы хотите приостановить таймер, а затем перезапустите его после возобновления приложения. Я реализовать таймер обратного отсчета, как так:Android-студия приостанавливает и возобновляет отсчет таймера для индикатора выполнения
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
int progress = (int) (millisUntilFinished/100);
progressBar.setProgress(progress);
}
@Override
public void onFinish() {
progressBar.setProgress(0);
Intent intent = new Intent(getApplicationContext(), GameOver.class);
startActivity(intent);
finish();
}
}
И в моем он создать:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_screen);
progressBar = (ProgressBar)findViewById(R.id.timerBar);
progressBar.setProgress(100);
myCountDownTimer = new MyCountDownTimer(10000, 10);
myCountDownTimer.start();
}
Это работает, однако таймер продолжает работать в фоновом режиме и закончится активность при достижении 0 – Zorqe
Ооо не думал об этом. Вы можете сделать следующее: сохранить значение таймера при его приостановке, отменить текущий таймер и, наконец, перезапустить новый таймер с оставшимся временем. Вы можете сохранить оставшееся время в методе 'onTick (...)'. Когда вы создаете свой таймер, установите более низкую 'countDownInterval' для большей точности. – WannaGetHigh