即使活动开始,onResume也能正常工作

时间:2014-12-01 19:00:31

标签: android onresume application-restart

我有一个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中保存的内容。

2 个答案:

答案 0 :(得分:1)

每当您启动新活动时,始终会调用

OnResume。你可以从Activity LifeCycle看到这个。如果您不想在重新启动应用时获取数据,请在onPause内使用isFinishing()方法,如果它返回true,请在关闭Activity之前清除所有内容。

  

isFinishing()检查此活动是否正在完成,因为您在其上调用了finish()或其他人已请求完成。

答案 1 :(得分:0)

    onCreate ()中设置默认值。 OnResume ()中获取最新值并更新其值 meds adap
  1. OnPause ()中保存您的偏好..这就是你的意思 现在做.. ..
  2. 您无需在 onDestroy ()中清除首选项, 因为无法保证系统调用 onDestroy()