我知道Android的ContentProvider可以从多进程/多线程进行多次写入而不会引发锁定异常。在多线程环境中,它可能已使用读写锁同步了该方法。但是关于将创建多个对象的多进程呢?任何人都可以让我进行ContenProvider的内部工作吗。
答案 0 :(得分:0)
ContentProvider是清单式声明的组件,它由OS实例化并绑定到主进程(除非属性process
的指定不同)。因此,在该应用程序进程的生存期内,仅创建一个声明的ContentProvider
的单个实例。希望与之交互的其他过程必须经过ContentResolver,而该Binders仅与创建的那个提供者进行通信。
请注意,当从另一个进程中使用提供程序时,它正在通过IPC(特别是通过AssetFileDescriptor)进行通信,这意味着将在IPC调用期间在BinderThread
中调用提供程序的方法。有一个绑定线程线程池,以便可以与多个应用程序进行一些并发通信,这意味着应该进行适当的同步。
总而言之,内容提供者对于多进程和多线程交互是安全的,因为: