Question

I have the following situation:

One activity that is updated from a service. When the update is made, some preferences are written. Everything fine so far. When the activity is not visible and the service decides to do an update, I get a notification. Clicking on this notification opens the activity where I expect to find the previously stored preferences, but nothing is there.

I saw that when clicking on the notification the onCreate() method of the activity is called and this is where I create an arrayadapter which contains the preferences, unfortunately the preferences are somehow not there.

Please keep in mind that:

  • I use commit() when I update the preferences

  • I access the SharedPreferences this way (when reading and when writing):

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

where SHARED_PREF_FILE is a constant. While debugging I found out that the sharedPref object is pointing to the same xml file (/data/data/........xml), so this should be okay.

Best regards

Edit (some code):

I have a class (PrefManager) managing the 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>());
}

In the Activity's onCreate() I have this:

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

Solution

Answering my own question, in case someone stumbles upon this:

I was able to make it work by adding this to the intent that was used for the creation of the notification:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top