再次调用onCreate时,SharedPreferences丢失

时间:2014-04-18 13:33:46

标签: android android-activity android-notifications

我有以下情况:

从服务更新的一项活动。进行更新时,会写入一些首选项。到目前为止一切都很好。 当活动不可见且服务决定进行更新时,我会收到通知。单击此通知将打开我希望找到以前存储的首选项的活动,但没有任何内容。

我看到点击通知时调用了活动的onCreate()方法,这就是我创建包含首选项的arrayadapter的地方,不幸的是,首选项不存在。

请记住:

  • 我在更新偏好时使用commit()

  • 我以这种方式访问​​SharedPreferences(在阅读和写作时):

    SharedPreferences sharedPref = context.getSharedPreferences(             SHARED_PREF_FILE,Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);

其中SHARED_PREF_FILE是常量。调试时我发现sharedPref对象指向同一个xml文件(/data/data/domxml),所以这应该没问题。

祝你好运

编辑(部分代码):

我有一个类(PrefManager)来管理SharedPreferences:

public static Set<String> retrieveData(Context context) {
    SharedPreferences sharedPref = context.getSharedPreferences(
            SHARED_PREF_FILE, Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);
    return sharedPref.getStringSet(MY_KEY,
            new HashSet<String>());
}

在Activity的onCreate()中我有这个:

myAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, PrefManager.retrieveData(this));

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,万一有人偶然发现:

我能够通过将其添加到用于创建通知的意图来使其工作:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);