Android中Sharedpreferences跨进程时数据刷新问题

在最近想买中需要在service里面通过Sharedpreferences进行保存用户登录信息,访问模式设为了MODE_PRIVATE,结果在登录成功保存信息然后通知BroadcastReceiver时无法实时读取,每次当数据在Activity中改变时,在BroadcastReceiver中读取的都是上一次的值,而对应的XML文件中的数据已经改变了,并且只有手动清除应用程序的缓存后,才可以读取到修改后的值。弄了半天才发现问题所在: 
我的service在AndroidMainfest.xml中注册了android:process=”:remote”属性,即作为一个独立的进程来启动,因此启动service后二者不在一个进程中,所以需要把Sharedpreferences的访问模式改为MODE_MULTI_PROCESS,这样便可以实时读取Sharedpreferences中修改后的值。

另外,我还试了下,把AndroidMainfest.xml中的android:process=”:remote”这一行去掉,把Sharedpreferences的访问模式改为MODE_PRIVATE,这样也可以实时读取了

访问模式:
  Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中,可以使用Activity.MODE_APPEND  
  Activity.MODE_WORLD_READABLE,//表示当前文件可以被其他应用读取,  
  Activity.MODE_WORLD_WRITEABLE,//表示当前文件可以被其他应用写入;  
                                //如果希望文件被其他应用读和写,可以传入:Activity.MODE_WORLD_READABLE+Activity.MODE_WORLD_WRITEABLE  
  Activity.MODE_APPEND//该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值