Android 多进程内容提供程序已同步到默认内容提供程序

Android 多进程内容提供程序已同步到默认内容提供程序,android,multithreading,android-contentprovider,Android,Multithreading,Android Contentprovider,根据: android:多进程 是否可以在每个客户端进程中创建内容提供者的实例?如果实例可以在多个进程中运行,则为“true”;如果实例不能在多个进程中运行,则为“false”。默认值为“false” 通常,内容提供者是在定义它的应用程序的过程中实例化的。但是,如果此标志设置为“true”,则系统可以在每个进程中创建一个实例,其中有客户机希望与之交互,从而避免进程间通信的开销 因此,如果此属性设置为true,则在每个进程中都将创建内容提供者的实例 问题1此实例是对内容提供商的引用还是对整个内容提

根据:

android:多进程

是否可以在每个客户端进程中创建内容提供者的实例?如果实例可以在多个进程中运行,则为“true”;如果实例不能在多个进程中运行,则为“false”。默认值为“false”

通常,内容提供者是在定义它的应用程序的过程中实例化的。但是,如果此标志设置为“true”,则系统可以在每个进程中创建一个实例,其中有客户机希望与之交互,从而避免进程间通信的开销

因此,如果此属性设置为
true
,则在每个进程中都将创建内容提供者的实例

问题1此实例是对内容提供商的引用还是对整个内容提供商的副本

问题2系统如何处理将更改同步回默认/原始实现?数据源(SQLite等)是否负责多进程读/写

问题3这是一个更有根据的猜测。最初,在拥有内容提供者的应用程序中有一个内容提供者实例。每次其他应用程序与它交互时,它们都通过IPC进行交互,这意味着:

other app --> IPC --> content provider --> data source
当设置了
multiprocess=“true”
时,系统将在每个进程中创建内容提供程序的副本。因此,应用程序不必通过IPC与内容提供商交互

other app ---> content provider ---> data source
内容提供商仍然可以直接访问数据源。在这种情况下,它的方法必须是线程/进程安全的,因为其他应用程序也将访问它


如果这个场景是正确的,那么这个线程安全实现是否不同于线程安全的默认要求?

好问题,很遗憾,我找到了一个答案:不要使用这个属性

不要用这个,这是一些旧的原油从1.0之前的设计,没有 这些天来,我们应该忽视工作和工作。只是假装像 属性不存在。:}

黛安娜·哈克博尔

Android框架工程师

我创建了一个问题,要求对此进行适当记录:

2020年12月更新(6年后): 问题仍未解决,我在这里打开了一份新报告:

太好了!谢谢他们应该在官方文档中明确指出:/该问题请求刚刚以“不会修复,过时”的形式结束。而且修复文档也很容易。我为此错误创建了一份新报告: