72

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

据我所知是:

  1. 意图
  2. 粘合剂
4

7 回答 7

97

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

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

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

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

于 2011-04-21T06:31:56.023 回答
40

Android中的IPC机制分为三种:

  1. 意图(连同捆绑包)
  2. 粘合剂
  3. ASHMEM(匿名共享内存)- Linux 共享内存和此共享内存之间的主要区别在于,在 Linux 中,其他进程无法释放共享内存,但如果其他进程需要内存,则此内存可以由 Android 操作系统释放。
于 2011-05-09T09:40:49.853 回答
23

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

Binder IPC和Serialization IPC有很多区别:

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

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

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

底线: Binders使用更少的内存,并且使用包裹非常快。Serialization非常重,发送和接收数据需要时间,并且与活页夹相比需要更多的内存。

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

希望这可以帮助 :)

于 2016-02-17T07:57:07.427 回答
22

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

  • 意图(包括捆绑包)
  • 具有服务的活页夹或信使
  • 广播接收器
于 2014-02-07T14:18:55.703 回答
6

IPC 机制分为三种类型:

  1. 处理程序
  2. 实施活页夹
  3. AIDL
于 2012-09-17T11:50:10.837 回答
1

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

  1. AIDL 这是一种具有并发操作的两种方式。
  2. 信使 aa 双向但不并发
  3. 广播作为一种方式此外,您可以使用套接字,但不建议这样做。
于 2021-12-15T21:47:24.403 回答
0

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

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

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

于 2021-01-29T10:28:27.763 回答