Content Provider vs SharedUserId vs Global Process 用于跨应用程序共享数据

Content Provider vs SharedUserId vs Global Process for sharing data across applications

我找到了三种跨应用程序共享数据的方法。

1.内容提供商

2.SharedUserId-当您为多个应用程序声明相同的共享用户id时,它们可以访问彼此的资源(数据字段、视图等)。提供的应用程序使用相同的证书签名。

3.全局进程-通过使用android:process属性和以小写字母开头的命名进程和另一个应用程序的另一个组件,将一个应用程序的组件放在单独的进程中在与第一个 application.Now 的单独进程同名的单独进程中,这些组件可以共享数据。

我很困惑什么时候使用什么或哪个更有效?

I found three ways to share data across applications.

#2 和#3 相同,因为#3(共享过程)需要#2(sharedUserId)。

您还错过了所有其他形式的标准 Android IPC,包括:

  • 开始活动
  • 正在启动服务
  • 绑定到服务
  • 正在发送广播

I am confused what to use when

普通应用程序开发人员应使用 #1 (ContentProvider) 或我上面概述的其他标准 Android IPC 机制之一。您无法控制用户何时更新应用程序,并且使用正式的 IPC 会在应用程序之间实施明确的分离,迫使您仔细考虑 API 合同、API 版本控制和相关问题。

sharedUserId 和共享流程确实适用于设备制造商,其中应用程序是预安装的,然后通过固件更新统一更新。就个人而言,我建议设备制造商在大多数情况下也使用标准 IPC。比如App A直接修改了App B的文件,App B怎么知道的?如果 App B 然后覆盖了 App A 的更改,因为 App B 不知道这些更改怎么办?在计算机编程的许多其他领域,我们已经摆脱了让来自多个应用程序的多个进程直接与其他文件一起工作的做法。

which is more efficient?

在这种情况下,效率应该不是问题,因为您应该很少使用这些技术中的任何一种。如果你有两个需要经常相互通信的应用程序,那么你真的只有一个应用程序,你应该那样实现它。