我同意米尔特!
暂停():
“如果一个活动失去焦点但仍然可见(也就是说,一个新的非全尺寸或透明活动的焦点在你的活动之上),它就会被暂停。一个暂停的活动是完全活跃的(它保持所有状态和成员信息并保持连接到窗口管理器),但可以在内存极低的情况下被系统杀死。”
如果您在不按返回(按住 HOME)的情况下交换应用程序,那么操作系统将调用 onPause。当您在 onResume 中返回活动(再次按住 HOME)时,您应该保留所有私有变量。但是你不能控制用户,对吧?!
如果您预计用户将离开您的应用并且操作系统调用您的 onStop,如果您打算从中断的地方继续,则最好保存您的数据。
我也有一个计时器,我需要保存经过的时间,这样当用户返回时,我可以恢复数据。这是我要保存的示例:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
savedInstanceState.putLong("elapsedTime", elapsedTime);
// etc.
}
还有我要恢复的代码:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
elapsedTime = savedInstanceState.getLong("elapsedTime");
}
将这些方法放在你的类中,你就可以开始了。请记住,在我的例子中,字符串“elapsedTime”是系统的关键,它必须是唯一的。为您要保存的每条数据使用唯一的字符串。例如“startClock”、“ClockTextColor”等...