【问题标题】:What are the IPC mechanisms available in the Android OS?Android 操作系统中可用的 IPC 机制有哪些?
【发布时间】:2011-08-10 01:34:20
【问题描述】:

谁能告诉我Android中存在的所有IPC机制是什么。

据我所知:

  1. 意图
  2. 活页夹

【问题讨论】:

    标签: android android-intent ipc android-bundle android-binder


    【解决方案1】:

    Android 中特定于树的进程间通信是:

    1. AIDL 是一种双向并发操作。
    2. Messanger aa 双向但不并发
    3. 单向广播 此外,您可以使用套接字,但不建议这样做。

    【讨论】:

      【解决方案2】:

      另一个对我有用的解决方案是使用内部文件:

      https://developer.android.com/training/data-storage#filesInternal

      从一个进程写入,关闭文件,从另一个进程读取。

      【讨论】:

        【解决方案3】:

        这篇文章中的所有答案都很好且简洁。但我想说明我们应该使用哪种IPC 机制。首先IPC 表示Inter Process communication,其中两个应用程序或进程将通过在它们之间传递一些数据来相互通信。由于android是为嵌入式和小型设备设计的,我们不应该使用serialization来代替IPC,而是可以使用BINDERs,内部使用parcelsParcel 是一种使用共享内存概念的轻量级序列化。

        Binder IPC和Serialization IPC有很多区别:

        1.序列化在嵌入式设备中使用非常繁重,通信会很慢。

        2.Binders使用Parcels做IPC非常快。

        3. Binder 在内部使用共享内存概念,在两个进程之间共享数据时使用更少的内存。

        底线: Binders 使用更少的内存,而且速度非常快,因为它使用包裹。 Serialization 很重,发送和接收数据需要时间,而且比 binder 占用更多的内存。

        注意:要在 Activity、服务和接收器之间传递数据,只能使用 Bundles。不要选择序列化或活页夹。 Binder 专门用于 2 个进程将进行通信的 Binder 服务。

        希望对您有所帮助:)

        【讨论】:

          【解决方案4】:

          IPC 是进程间通信。它描述了不同类型的 android 组件用于相互通信的机制。

          1) Intents 是组件可以发送和接收的消息。它是一种在进程之间传递数据的通用机制。在意图的帮助下,我们可以启动服务或活动,调用广播接收器等等。

          2) Bundles 是通过的数据实体。它类似于对象的序列化,但在 android 上要快得多。 Bundle 可以通过 getExtras() 方法从 Intent 中读取。

          3) Binders 是允许活动和服务获取对另一个服务的引用的实体。它不仅允许简单地向服务发送消息,还允许直接在它们上调用方法。

          【讨论】:

          • 而这个universal mechanism 是通过...什么方式实现的? (期待内核系统调用、dalvik 中的 java 扩展等)
          • Bundle 可以看成是 Intent 自带的,别忘了 BroadcastReceiver。以下是来自 Android 官方页面的文字:“我们强烈建议您改用 Android 系统功能来实现 IPC,例如 Intent、Binder 或 Messenger with a Service 以及 BroadcastReceiver”。 developer.android.com/training/articles/security-tips.html#IPC
          • 有人可以添加示例吗?如果每种 IPC 类型都有用例,新手会更快地理解它。
          • different types of android components 还是不同类型的安卓进程?
          • “绑定器”实际上不是基于 Android 中所有提到的机制吗?我们知道 Android Binder 框架为 IPC 提供了内核能力。
          【解决方案5】:

          Android 中的 IPC 机制分为三种:

          1. 意图(连同捆绑包)
          2. 活页夹
          3. ASHMEM(匿名共享内存) - Linux 共享内存和此共享内存之间的主要区别在于,在 Linux 中,其他进程无法释放共享内存,但如果其他进程需要内存,则此内存可以由 Android 操作系统释放。

          【讨论】:

          • AIDL 没有进来吗??
          • Binders 包括 AIDL。它只是一种语言,可以帮助您为 IPC 生成 Binder 接口。
          • 只有在知道自己在做什么的情况下才使用 ASHMEM。不保证不同android版本之间的兼容性。
          • 应添加 UNIX 套接字和管道
          • 内容提供者和广播呢?
          【解决方案6】:

          正如Android Developers page 所写,Android 中的 IPC 机制包括:

          • 意图(包括捆绑包)
          • 具有服务的活页夹或信使
          • 广播接收器

          【讨论】:

          • 都是基于binder IPC的。
          【解决方案7】:

          IPC 机制分为三种类型:

          1. 处理程序
          2. 实施活页夹
          3. AIDL

          【讨论】:

          • 处理程序不是。信使是。
          猜你喜欢
          • 1970-01-01
          • 2020-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-28
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          相关资源
          最近更新 更多