我找到了三种跨应用程序共享数据的方法。
1. 内容提供商
2. SharedUserId - 当您为多个应用程序声明相同的共享用户ID时,他们可以访问彼此的资源(数据字段,视图等)。提供的申请使用相同的证书签名。
3. 全局流程 - 通过使用android:process属性和以小写字母开头的命名过程和另一个应用程序的另一个组件(在具有相同名称的单独进程中),在单独的进程中放置一个应用程序的组件第一个应用程序的单独过程。现在这些组件可以共享数据。
我很困惑什么时候使用或哪种更有效?
答案 0 :(得分:2)
<#>#2和#3是相同的,只要#3(共享过程)需要#2(我找到了三种跨应用程序共享数据的方法。
sharedUserId
)。
您还错过了所有其他形式的标准Android IPC,包括:
我很困惑在
时使用什么
普通的应用开发者应该使用#1(ContentProvider
)或上面概述的其他标准Android IPC机制之一。您无法控制用户何时更新应用程序,并且使用正式的IPC会强制实施应用程序之间的明确分离,从而迫使您思考诸如API合同,API版本控制和相关问题之类的事情。
sharedUserId
并且共享进程实际上适用于设备制造商,其中应用程序已预先安装,然后通过固件更新一致更新。就个人而言,我建议设备制造商在大多数情况下都使用标准IPC。例如,如果App A直接修改App B的文件,App B如何找到?如果App B覆盖App A的更改会怎么样,因为App B不知道这些更改?在计算机编程的许多其他领域,我们已经远离多个应用程序的多个进程直接与其他文件一起工作。
更有效率?
在这种情况下,效率不应成为问题,因为您应该不经常使用这些技术中的任何一种。如果你有两个需要经常互相通信的应用程序,那么你真的有一个应用程序,你应该这样实现它。