关于使用service的上下文和activity来读取sharedpreferences的同步问题

比如我用activity 对象 mainactivity 的context 获取了sharedpreferences对象,并putString(context, "demo", "aaaa");


接着用service 对象 myservice 的 context 获取sharedpreferences对象,getString(context, "demo", "");
这样得到的是"aaaa",是正确的,但是,我接着在mainactivity中修改键为"demo"的值,改成"bbbb"
接下来再在myservice中获取键位"demo"的值,但还是"aaaa",意思就是数据没有同步,但是我用RE管理器查看配置文件,键为"demo"的值已经改为"bbbb"了....
求帮助,而且我在service中修改配置文件之后,activity再去读取,还是原来的数据,但是用RE管理器去查看,确实是修改了啊,是数据没同步吗?

我之前也遇到了这个问题,但是调研了一下发现,getSharedPreferences的时候的mode使用的是MODE_PRIVATE,这种mode不支持activity跟service之间的数据同步。把mode改成了MODE_MULTI_PROCESS,直接可以解决了activity修改share数据,service可以直接同步。
不知道是不是能够解决楼主的问题

http://bbs.csdn.net/topics/390608334

http://www.cnblogs.com/mengdd/p/5849201.html

MODE_MULTI_PROCESS过时了,自己这样写后,也没有解决问题。自己的解决方案,就是将保存到数据库中的值,更新,然后Service里面直接去读取数据库中的值。

原文地址:https://www.cnblogs.com/liyanli-mu640065/p/7641206.html