我有一个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中保存的内容。
答案 0 :(得分:1)
OnResume
。你可以从Activity LifeCycle看到这个。如果您不想在重新启动应用时获取数据,请在onPause
内使用isFinishing()方法,如果它返回true
,请在关闭Activity
之前清除所有内容。
isFinishing()
检查此活动是否正在完成,因为您在其上调用了finish()或其他人已请求完成。
答案 1 :(得分:0)