android - 在活动销毁时保存 Countdowntimer 并在 onResume() 中恢复它
问题描述
我想启动一个计数器 2 分钟,当活动破坏时,我想保存它,在活动恢复时,我想在我离开的地方启动计数器
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();
解决方案
我们只是保存millisUntilFinished
活动被销毁时的值,并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();
}
并获取millisUntilFinished
您想要启动的时间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();
推荐阅读
- ios - 如何在 SwiftUI 中实现自定义日历?
- javascript - 从更改事件中获取旧值
- python - 你好!我正在努力尝试让一个while循环工作
- javascript - 带有id的VueJs拼接行
- wordpress - 分页在 Wordpress 中不起作用
- javascript - 代码镜像无法在 Heroku Rails 6 应用程序上正确呈现
- lotus-notes - Lotus Notes 10 中的单面/双面打印
- jquery - 用于 React 项目的 Slider pro
- excel - Excel 随机数
- python - numpy.array:TypeError:“DataFrame”对象不可调用