У меня есть CountdownTimer, который отсчитывает от 60 секунд. Этот CountdownTimer работает, устанавливая textView на оставшиеся миллисекунды, но всякий раз, когда я поворачиваю свое устройство, CountdownTimer сбрасывается.
Я знаю, что это происходит, потому что Activity перезапускается при ротации. Поэтому я попытался сохранить время, оставшееся в пакете, а затем восстановить его после перезапуска Activity.
long transferValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_playtimemode);
Log.d("Debug", "onCreate: " + transferValue);
long setTime = 60000;
long difference = setTime - transferValue;
new CountDownTimer(difference, 1000) {
public void onTick(long millisUntilFinished) {
millisUntilFinishedToSave = millisUntilFinished;
tvCountdown.setText("" + millisUntilFinished / 1000);
}
public void onFinish() {
tvCountdown.setText("done!");
}
}.start();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong("millisKey", millisUntilFinishedToSave);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
transferValue = savedInstanceState.getLong("millisKey");
Log.d("Debug", "onRestoreInstanceState(): " + transferValue);
}
Однако это не работает. Я инициализирую transferValue в верхней части этого кода (следовательно, он возвращает 0), но как еще я могу сохранить данные из saveInstanceState в CountdownTimer?
07-06 20:21:30.038: D/Debug(28995): onCreate: 0
07-06 20:21:30.043: D/Debug(28995): onRestoreInstanceState(): 55994