Android中Sharedpreferences牵涉到跨进程时不能实时读取的问题
2013-09-06 23:46
288 查看
转载请注明出处:http://blog.csdn.net/ns_code/article/details/11271053
在做课程表应用时,由于要设置课前提醒的时间,我通过Sharedpreferences进行保存,访问模式设为了MODE_PRIVATE,结果在启动的BroadcastReceiver中无法实时读取,每次当数据在Activity中改变时,在BroadcastReceiver中读取的都是上一次的值,而对应的XML文件中的数据已经改变了,并且只有手动清除应用程序的缓存后,才可以读取到修改后的值。弄了半天才发现问题所在:
我的BroadcastReceiver在AndroidMainfest.xml中注册了android:process=":remote"属性,即作为一个独立的进程来启动,因此启动BroadcastReceiver后二者不在一个进程中,所以需要把Sharedpreferences的访问模式改为MODE_MULTI_PROCESS,这样便可以实时读取Sharedpreferences中修改后的值。
另外,我还试了下,把AndroidMainfest.xml中的android:process=":remote"这一行去掉,把Sharedpreferences的访问模式改为MODE_PRIVATE,这样也可以实时读取了!
So, 问题就这样解决了!
中间参考了这篇文章:android关于SharedPreferences,createPackageContext生成的context实例缓存清除问题
在做课程表应用时,由于要设置课前提醒的时间,我通过Sharedpreferences进行保存,访问模式设为了MODE_PRIVATE,结果在启动的BroadcastReceiver中无法实时读取,每次当数据在Activity中改变时,在BroadcastReceiver中读取的都是上一次的值,而对应的XML文件中的数据已经改变了,并且只有手动清除应用程序的缓存后,才可以读取到修改后的值。弄了半天才发现问题所在:
我的BroadcastReceiver在AndroidMainfest.xml中注册了android:process=":remote"属性,即作为一个独立的进程来启动,因此启动BroadcastReceiver后二者不在一个进程中,所以需要把Sharedpreferences的访问模式改为MODE_MULTI_PROCESS,这样便可以实时读取Sharedpreferences中修改后的值。
另外,我还试了下,把AndroidMainfest.xml中的android:process=":remote"这一行去掉,把Sharedpreferences的访问模式改为MODE_PRIVATE,这样也可以实时读取了!
So, 问题就这样解决了!
中间参考了这篇文章:android关于SharedPreferences,createPackageContext生成的context实例缓存清除问题
相关文章推荐
- Android中Sharedpreferences牵涉到跨进程时不能实时读取的问题
- java中org.xml.sax不能读取xml回车换行的问题解决(android)
- 【Android】Android6.0及以上不能读取外部存储问题
- 关于android 百度地图api 不能实时刷新的问题
- 关于android 百度地图api 不能实时刷新的问题
- Android工具之解决安卓6.0以上版本不能读取外部存储权限的问题
- 将Android工程打成jar并解决资源不能读取的问题
- Android之解决aidl里面函数参数太大不能跨进程通信的问题
- 解决Android SDK Manager不能下载更新SDK的问题
- 解决fstream.open()不能正确读取中文路径的问题
- Android手机APN设置(中国移动 联通3G 电信天翼),解决不能上网的问题
- android 蓝牙模块遇到的问题,关闭蓝牙以后下次不能正常连接
- android prgoressBar setProgressDrawable 在4.0系统式正常,在2.3系统上不能正常使用的问题
- Android SDK Tools 升级到revision 17+后Admob不能使用问题的解决方法
- Android将Activity 打 jar包 (解决资源文件不能打包的问题)
- android飞行模式灰显不能操作问题分解
- 解决ios,android在微信中audio不能自动播放的问题
- android Canvas 向左上、右上、左下 方向绘制矩形不能跟随手指移动问题
- 安装VM遇到imagec~1.cab不能读取问题
- 解决AndroidADT自带Eclipse编辑器不能自动代码提示的问题