【发布时间】:2014-12-01 19:00:31
【问题描述】:
我有一个 onPause 和一个 onResume,看看这两个:
@Override
public void onResume(){
super.onResume();
String str = "";
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
for (int i = 0; i<prefs.getAll().size(); i++){
str = prefs.getString(String.valueOf(i), "");
meds.add(str);
adap.add(str);
adap.notifyDataSetChanged();}}
@Override
public void onPause() {
super.onPause();
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
for (int i = 0; i<meds.size(); i++){
editor.putString(String.valueOf(i), meds.get(i));
String str1 = editor.toString();
String str = prefs.getString("0", "");
}
editor.commit();
}
现在,每当我真的想恢复活动时,这都可以正常工作 - 比如说,用户按下后退按钮。
但是,当我完全重新启动应用程序(如:关闭程序,再次运行)时,显然会调用 onResume,因为我的数据设置为保存在 onPause 中的数据。
我只是使用了错误的方法吗? 实际重新启动应用程序时,我想从我的默认数据开始,而不是从 onPause 中保存的数据开始。
【问题讨论】:
-
See Activity LifeCycle
OnResume总是在您启动新活动时被调用。 -
嗯。因此,如果我不想在重新启动应用程序时拥有我的数据,我必须在 onDestroy 中销毁它们?因为在程序停止时会调用 onDestroy?
-
实际上onDestroy 并不可靠,并且在某些情况下可能不会被调用,例如当操作系统因内存需求而终止您的活动时。
-
所以我现在知道我做错了什么,但不知道如何正确地做。是否有变量或某事。我可以调用 onCreate 来检查 Activity 是否在应用运行期间首次启动?
-
检查我的答案。如果有帮助,请告诉我。
标签: android onresume application-restart