简体   繁体   中英

Not getting the updated value of the shared preference in the service

I am storing some value to a shared preference from an activity which launched from a widget. If I retrieve that value from the service started from the same widget, it is not the updated one. I am getting the previous value had in the shared preference. Even i check that value in the shared preference xml, i sees the updated one there. Why this is happening. I know that widget and activity are two process, is that the reason?​

SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);

String targetValue = preferences.getString("preferences_target_value", "0");

System.out.println("targetValue "+targetValue);`

These values are cached per process.

If you are running on Android > 2.3 you must specify MODE_MULTI_PROCESS when you call getSharedPreferences () . If you are running on Android < 2.3 then it should just work correctly. If you are running on Android 2.3 then there is a bug in the shared preferences stuff and it doesn't work correctly across multiple processes no matter what you do.

use commit() after updating values, call this to have any changes you perform in the Editor

prefsEditor.commit();

change your code instead of this

SharedPreferences preferences = getSharedPreferences("preferences_target_value", Context.MODE_PRIVATE);

to this

SharedPreferences preferences = getSharedPreferences("preferance name", Context.MODE_PRIVATE);

In manifest file try removing

android:process=":my_process"

from service. Hope it will work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM