Android操作系统中有哪些IPC机制?

请问任何人请告诉我什么是所有的IPC机制,目前在Android。

据我所知:

1)意图,
2)粘合剂。

IPC是进程间通信。 它描述了如何传递不同types的android组件的机制。

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

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

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

Android中有三种IPC机制:

  1. 意图(与捆绑)
  2. 粘合剂
  3. ASHMEM(匿名共享内存) – Linux共享内存和这个共享内存之间的主要区别是,在Linux中,其他进程不能释放共享内存,但是如果其他进程需要内存,这个内存可以被Android OS释放。

正如在Android Developers页面上所写, Android中的 IPC机制包括:

  • 意向(包括捆绑)
  • 活页夹或信使与服务
  • BroadcastReceivers

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

Binder IPC和Serialization IPC之间有许多不同之处:

1.串行化在embedded式设备中使用非常繁重,通讯速度会很慢。

2.粘合剂使用Parcels使IPC非常快速。

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

底线: Binders使用较less的内存,并且使用包裹的速度相当快。 Serialization非常繁重,需要时间来发送和接收数据,并且与绑定器相比,它需要更多的内存。

注意:要在活动,服务和接收者之间传递数据,只能使用Bundles 。 不要去串行化或粘合剂。 粘合剂专门用于2个过程进行通信的粘合剂服务。

希望这可以帮助 :)

有三种types的IPC机制:

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