sharedPreferences 数据 同应用 跨进程 不能立即更新

1、SharedPreferences权限设置,我们在getSharedPreferences方法中第二参数是用来表明我们的SharedPreferences的使用属性的,这个参数可以是下面值:

MODE_PRIVATE=0:只能是当前的应用才能操作文件如果创建的文件已经存在新内容覆盖原内容;

MODE_APPEND=32768:新内容追加到原内容后这个模式也是私有的这个文件只能被创建文件的应用所访问;

MODE_WORLD_READABLE=1:允许其他应用程序读取本应用创建的文件;

MODE_WORLD_WRITEABLE=2:允许其他应用程序写入本应用程序创建的文件,会覆盖原数据。

        所以如果我们的SharedPreferences能让外部程序读取,就必须选择MODE_WORLD_READABLE或或者MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE。

但是有一点值得注意,当使用这几种权限时,其他程序访问数据时启动本程序修改文件数据,其他程序得到的还是缓存数据得不到最新的数据, 其他程序要想得到最新数据,本程序在写文件时必须使用MODE_MULTI_PROCESS权限(参数是4)。 如果不通过创建Context访问其他应用的preference,可以以读取xml文件方式直接访问其他应用preference对应的xml文件,如: File xmlFile = new File(“/data/data//shared_prefs/config.xml”);//应替换成应用的包名.


第一个程序的: SharedPreferences  preferences = getSharedPreferences("count", MODE_WORLD_READABLE);

第二个程序的:

                    // 获取其他程序所对应的 Context

Context  useCount = createPackageContext("org.crazyit.io", Context.CONTEXT_IGNORE_SECURITY);(org.crazyit.io是包名,为了获取对应的context)

SharedPreferences prefs = useCount.getSharedPreferences("count", Context.MODE_WORLD_READABLE); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值