yoshi24
yoshi24

Reputation: 3177

Service not saving SharedPreference for Main Activity?

I am using a service to download and retrieve a list of URL's and put them in a sharedpreference.

With this..

SharedPreference images_article = this.getSharedPreferences("images_articles", MODE_WORLD_READABLE);
editor.putString("article2", urlImage2);
editor.putString("article3", urlImage2);
editor.commit();

Then in my Main.Activity i pull the url's from preference.

SharedPreference images_article = this.getSharedPreferences("images_articles",  MODE_WORLD_READABLE);
urlImage2 = images_article.getString("article2", "NO ARTICLE AVAILABLE");
urlImage3 = images_article.getString("article3", "NO ARTICLE URL AVAILABLE");

The only problem is for some reason it isnt going inside of the shared preference, because the Main activity is loading the OLD URL's that has now changed. But in the Service i log the url's being retrieved and they are updated but for some reason in the main activity it still loads the old one. and im retrieving them from the same preference.

Is there anything i am missing or a better way to do this? Any help would be great!!

Upvotes: 1

Views: 3578

Answers (3)

Whitaker
Whitaker

Reputation: 31

Using this in both the Activity and Service classes seems to work for me, as it should now be using the same Context to access the application SharedPreferences:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

Upvotes: 1

Arnab Chakraborty
Arnab Chakraborty

Reputation: 7472

This might be happening due to the different contexts you are accessing from. I am not very sure though, but you can try this :

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sp.edit();

Use this code, whenever you try to access SharedPreferences, that is, from both the Service and the Activity. That might solve your problem.

Upvotes: 2

Havoc
Havoc

Reputation: 213

I was running in to a similar issue with my SharedPreferences between my Activity and Service. I ended up not using the default and used my own set file name

in the activity and service I set

private static final String PREFERENCE_NAME = "MyPreferenceFileName";

Then to get the values:

SharedPreferences pref = getSharedPreferences(PREFERENCE_NAME, Activity.MODE_PRIVATE);
pref_checked = pref.getBoolean("checked", true);

and to set the values:

SharedPreferences pref = getSharedPreferences(PREFERENCE_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("checked", value);
editor.commit();

This allowed me to use the same get and put logic in both my Service and Activity without any issues. I hope this helped.

Upvotes: 4

Related Questions