概述

如何让SharedPreferences支持多进程共享数据,我们可以在获取SharedPreferences对象的时候传入MODE_MULTI_PROCESS这个模式

SharedPreferences preferences = getSharedPreferences("default",MODE_MULTI_PROCESS);

但是这种做法是不推荐的,已经过时了,我们去看看源码的解释

* @deprecated MODE_MULTI_PROCESS does not work reliably in
* some versions of Android, and furthermore does not provide any
* mechanism for reconciling concurrent modifications across
* processes. Applications should not attempt to use it. Instead,
* they should use an explicit cross-process data management
* approach such as {@link android.content.ContentProvider ContentProvider}.
*/
@Deprecated
public static final int MODE_MULTI_PROCESS = 0x0004;

大概的意思就是说在某些Android的版本中,SharedPreferences是不可靠的,而且会有修改不一致的问题,应用程序不应该尝试去使用它,应该使用其他进程间通讯的方法,例如ContentProvider。

实现

先介绍一个第三方库,地址如下:
​​​DozenWang/DPreference​​​
特点:
1.多进程安全可靠共享数据
2.和SharedPreferences 同样的API
3.兼容老的app版本,不需要升级,只是在原来SharedPreferences的基础上包装了ContentProvider