您的位置:首页 > Web前端

跨进程SharedPreferences,createPackageContext生成的context实例缓存清除问题

2015-10-12 17:28 561 查看
我的主apk为A,调用的apk为B,
在A中通过createPackageContext(B.packagename,
INCLUDE_CODE)获得B的context实例,之后我通过B对文件数据修改,退出B,A中再通过context  otherAppsContext = createPackageContext(B.packagename,
CONTEXT_IGNORE_SECURITY),otherAppsContext.getSharedPreferences("config",otherAppsContext.MODE_WORLD_READABLE);拿到的还是以前的数据。

解决办法,修改getsharedpreference("config",otherAppsContext.MODE_WORLD_READABLE)的权限MODE_WORLD_READABLE修改为 MODE_MULTI_PROCESS

下面是
MODE_MULTI_PROCESS
的说明:

SharedPreference loading flag: when set, the file on disk will be checked for modification even if the shared preferences instance is already loaded in this process. This behavior is sometimes desired in cases where the application has multiple processes, all
writing to the same SharedPreferences file. Generally there are better forms of communication between processes, though.

This was the legacy (but undocumented) behavior in and before Gingerbread (Android 2.3) and this flag is implied when targetting such releases. For applications targetting SDK versions greater than Android 2.3, this flag must be explicitly set if desired.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息