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

时间:2014-07-16 21:11:28

标签: android multithreading android-contentprovider

根据Android documentation

  

机器人:多进程

     

是否可以在每个客户端进程中创建内容提供者的实例 - " true"如果实例可以在多个进程中运行,并且" false"如果不。默认值为" false"。

     

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

因此,如果此属性设置为true,则将在每个进程中创建Content Provider实例。

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

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

问题3 这是一个有根据的猜测。最初,在拥有内容提供商的应用程序中存在内容提供者实例。每当其他应用程序与之交互时,它们就会通过IPC实现,这意味着:

other app --> IPC --> content provider --> data source

设置multiprocess="true"后,系统会在每个进程中创建内容提供者的副本。因此,应用程序不必通过IPC与内容提供商进行交互。

other app ---> content provider ---> data source

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

如果这种情况是正确的,这个线程安全实现是否与线程安全的默认要求不同?

1 个答案:

答案 0 :(得分:16)

好问题,遗憾的是我找到了答案,它是:不要使用此属性。

  

不要使用它,它是1.0版之前的设计中的一些旧版本   工作,这些天应该被忽略。只是假装像   属性不存在。 :}

     

...

     

Dianne Hackbor

     

Android框架工程师

https://groups.google.com/forum/#!topic/android-developers/u9UMJtALSXw

我创建了一个问题,请求将其正确记录: https://code.google.com/p/android/issues/detail?id=217916