当我们应该更喜欢广播接收器AIDL、Ibinder时,使用情况是什么



我想知道当AIDL比广播接收器和设备更好的选择时的用例。类似地,当Ibinder比广播接收器更好和AIDL 时的用例

BroadcastReceiver

  1. 通信实体的类型:主要是不同的应用程序
  2. 通信由以下触发:Sender
  3. 通信接收方式:任意数量的接收器(一对多)
  4. 发件人知道谁在接收吗?:大多数情况下没有
  5. 真实世界类比:你在纸上写一些东西,然后在上面展示公告牌。有兴趣的人都可以阅读

示例:
您正在编写一个应用程序,该应用程序将在用户每次接到电话时记录通话时间。您的应用程序将响应PHONE_STATE 的广播

AIDL

  1. 通信实体的类型:不同的应用程序
  2. 通信由以下触发:接收器
  3. 通信接收方式:仅限接收方。(一对一)
  4. 发件人知道谁在接收吗?:是
  5. 真实世界类比:你会收到一封寄回邮资的信。您使用相同的信封和邮费给发件人写回信

示例:
您的应用程序已要求用户购买一些应用内产品,您需要致电Play Service以检查用户是否已成功处理付款并购买了应用内商品。

应用程序中的绑定服务

  1. 通信实体的类型:主要是同一应用程序中的组件
  2. 通信由以下触发:接收器
  3. 通信接收方式:仅限接收方。(一对一)
  4. 发件人知道谁在接收吗?:是的
  5. 现实世界类比:你坐在教室里,一个朋友递给你一张纸条,你在上面写一封回复,然后还给他

示例:
您的应用程序有5个屏幕,每个屏幕都有一个按钮,用于获取屏幕截图并将其保存到文件系统中。您可以在服务中解耦截图/保存到文件的逻辑,所有屏幕都只需调用该服务。

注意:如果是基于AIDL的IPC,则需要使用绑定服务来调用远程进程。