I want to start a counter for 2 minute and when activity destroy then i want to save that and on activity resume i want to start the counter where i left
counter = new CountDownTimer(120000, 1000) { // adjust the milli seconds here
public void onTick(long millisUntilFinished)
{
textview.setText("" + String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
Log.i(TAG, "onTick: "+millisUntilFinished);
}
public void onFinish()
{
textview.setText("done!");
}
}.start();
We just save a value of millisUntilFinished
when activity is destroy and create new CountDownTimer
with that value when activity start again.
long millisUntilFinished;
in onDestroy()
(or onStop()
)
@Override
public void onDestroy() {
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putLong("millisUntilFinished", millisUntilFinished);
editor.apply();
super.onDestroy();
}
and get value of millisUntilFinished
when you want to start the CountDownTimer
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
millisUntilFinished = prefs.getLong("millisUntilFinished", 120000);
counter = new CountDownTimer(millisUntilFinished, 1000) { // adjust the milli seconds here
public void onTick(long millisUntilFinished) {
this.millisUntilFinished = millisUntilFinished;
textview.setText("" + String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)
- TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
Log.i(TAG, "onTick: " + millisUntilFinished);
}
public void onFinish() {
textview.setText("done!");
}
}.start();