Android中Sharedpreferences 在 service 中使用时数据刷新不及时
2017-09-13 15:15
183 查看
今天老板让实现一个锁屏功能,涉及到利用service来动态注册广播监听屏幕的唤醒,因为是一个常驻进程服务,所以这里显示是否存在锁屏没有调用终止服务。而是利用Sharedpreferences来取值判断是否显示所以就要在service里面通过Sharedpreferences读取状态值,访问模式设为了MODE_PRIVATE,结果在Service中读取的都是上一次的值,而对应的XML文件中的数据已经改变了,并且只有手动清除应用程序的缓存后,才可以读取到修改后的值。弄了半天才发现问题所在:
我的service在AndroidMainfest.xml中注册了android:process=”:process1”属性,即作为一个独立的进程来启动,因此启动service后二者不在一个进程中,所以需要把Sharedpreferences的访问模式改为MODE_MULTI_PROCESS,这样便可以实时读取Sharedpreferences中修改后的值。
另外,我还试了下,把AndroidMainfest.xml中的android:process=”:process1”这一行去掉,把Sharedpreferences的访问模式改为MODE_PRIVATE,这样也可以实时读取了。
Sharedpreferences对多进程的支持不好。, 所以官方已经废弃了原先的MODE_MULTI_PROCESS, 并且建议跨进程存取值还是用ContentProvider之类的更靠谱一些.
下次来说说如何利用ContentProvider实现跨进程数据存取。
我的service在AndroidMainfest.xml中注册了android:process=”:process1”属性,即作为一个独立的进程来启动,因此启动service后二者不在一个进程中,所以需要把Sharedpreferences的访问模式改为MODE_MULTI_PROCESS,这样便可以实时读取Sharedpreferences中修改后的值。
另外,我还试了下,把AndroidMainfest.xml中的android:process=”:process1”这一行去掉,把Sharedpreferences的访问模式改为MODE_PRIVATE,这样也可以实时读取了。
Sharedpreferences对多进程的支持不好。, 所以官方已经废弃了原先的MODE_MULTI_PROCESS, 并且建议跨进程存取值还是用ContentProvider之类的更靠谱一些.
下次来说说如何利用ContentProvider实现跨进程数据存取。
相关文章推荐
- android 使用SharedPreferences对数据存储/删除/读取/文件删除
- 【Android 基础】数据存储SharedPreferences 使用
- Android app系统设置界面 数据的保存与读取 SharedPreferences 的正确使用
- Android — 使用 sharedPreferences 本地保存 key-value 数据
- Android数据共享 sharedPreferences 的使用方法
- Android的数据存储--SharedPreferences .
- android 不同Activity使用一个SharedPreference
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputS
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- android 中 SharedPreferences 的使用!
- (转)【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- Android学习13——数据存储之SharedPreference
- android 利用SharedPreferences 存储系统数据的高级应用(枚举)
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
- 数据持久化之sharedpreference的使用
- 使用bindingsource数据绑定时datagridview单元格无法及时刷新的问题
- android SharedPreferences 的使用
- Android 中SharedPreferences 使用
- 使用 SharedPreferences 存取复杂类型的数据