在 activity 上保存倒数计时器销毁并在 onResume() 中恢复它
Save Countdowntimer on activity destroy and resume it in onResume()
我想启动一个 2 分钟的计数器,当 activity 销毁时,我想保存它,然后在 activity 恢复时,我想在我离开的地方启动计数器
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();
我们只是在 activity 被销毁时保存 millisUntilFinished
的值,并在 activity 再次开始时使用该值创建新的 CountDownTimer
。
long millisUntilFinished;
在onDestroy()
(或onStop()
)
@Override
public void onDestroy() {
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putLong("millisUntilFinished", millisUntilFinished);
editor.apply();
super.onDestroy();
}
并在您想要启动 CountDownTimer
时获取 millisUntilFinished
的值
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();
将您的计数器数据存储在 onStop
方法中的共享首选项中,因为 onDestroy()
并不总是得到保证,并使用您从 onResume
方法
存储的数据启动您的计数器
我想启动一个 2 分钟的计数器,当 activity 销毁时,我想保存它,然后在 activity 恢复时,我想在我离开的地方启动计数器
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();
我们只是在 activity 被销毁时保存 millisUntilFinished
的值,并在 activity 再次开始时使用该值创建新的 CountDownTimer
。
long millisUntilFinished;
在onDestroy()
(或onStop()
)
@Override
public void onDestroy() {
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putLong("millisUntilFinished", millisUntilFinished);
editor.apply();
super.onDestroy();
}
并在您想要启动 CountDownTimer
millisUntilFinished
的值
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();
将您的计数器数据存储在 onStop
方法中的共享首选项中,因为 onDestroy()
并不总是得到保证,并使用您从 onResume
方法