Android下多进程访问SharedPreferences遇到的坑

在Android项目中,跨进程访问SharedPreferences遇到了问题。虽然不推荐使用SharedPreferences进行进程间通信,但通过设置Context.MODE_MULTI_PROCESS|MODE_WORLD_READABLE模式,可以在Server端创建SharedPreferences对象。Client端需获取Server端的context来创建SharedPreferences,这需要通过createPackageContext方法。然而,当Server端的其他字段设置为private模式时,client端无法访问,解决方案是将共享数据独立存储在专门的文件中。
摘要由CSDN通过智能技术生成
最近项目中遇到了跨进程访问SharedPreferences的问题,当然在Android中并不建议用SharedPreferences,比较建议使用contentProvider或者aidl的方式来交互。
首先为了方便理解,暂时把两个应用分为Server端和client端

第一个问题就是想要跨进程访问sharedpreferences,server端在获取sharedPreferences对象时,需要一个int 值得mode,这时的mode就需要设置成
Context.MODE_MULTI_PROCESS|MODE_WORLD_READABLE

接着client端调用SharedPrefences,需要一个context上下文对象,上下文对象简单的理解就是当前软件运行的环境,所以需要获取server端的context,而不能拿client本地的context创建sharedpreferences对象。
获取server端context,需要调用本地context的方法,所以还需要本地context的一个对象:
        Context c = null;
        try {
            c = context.createPackageContext("server端包名",
                    Context.CONTEXT_IGNORE_SECURITY);
        } catch (PackageManager.NameNotFoundExce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值