Android OS中有哪些IPC机制?

时间:2011-04-21 06:22:32

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

请问任何人请告诉我android中存在的所有IPC机制是什么。

据我所知:

1)意图,
2)粘合剂。

6 个答案:

答案 0 :(得分:84)

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

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

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

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

答案 1 :(得分:33)

Android中有三种类型的IPC机制:

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

答案 2 :(得分:21)

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

  • 意图(包括捆绑包)
  • 有服务的粘合剂或信使
  • BroadcastReceivers

答案 3 :(得分:15)

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

Binder IPC和序列化IPC之间存在许多差异:

1。在嵌入式设备中使用序列化非常繁重,通讯速度非常慢。

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

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

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

注意:要在活动,服务和接收者之间传递数据,请仅使用捆绑。不要选择序列化或粘合剂。粘合剂专门用于粘合剂服务,其中2个进程将进行通信。

希望这有助于:)

答案 4 :(得分:5)

IPC机制有三种类型:

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

答案 5 :(得分:0)

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

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

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