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

有没有人能告诉我 Android 中所有的 IPC 机制是什么。

据我所知是:

  1. 意图
  2. 活页夹
88380 次浏览

它描述了不同类型的 android 组件之间通信所使用的机制行程间通讯。

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

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

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

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

  1. 意图(连同包)
  2. 活页夹
  3. ASHMEM (匿名共享内存)-Linux 共享内存和这种共享内存的主要区别是,在 Linux 中其他进程不能释放共享内存,但是在这里,如果其他进程需要内存,这种内存可以由 Android 操作系统释放。

IPC 机制有三种类型:

  1. 联络人
  2. 实现活页夹
  3. AIDL

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

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

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

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

在嵌入式设备中使用串行化非常繁重,通信会非常慢。

Binders 使用 Parcels 使 IPC 变得非常快
绑定器内部使用共享内存概念,在两个进程之间共享数据时使用较少的内存。

底线: Binders使用较少的内存,而且相当快,因为它使用了包。Serialization非常重,需要时间来发送和接收数据,而且它需要更多的内存比活页夹。

注意: 要在活动、服务和接收者之间传递数据,只能使用 一捆一捆的。不要使用序列化或活页夹。绑定器仅用于两个进程通信的绑定器服务。

希望这个有帮助:)

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

Https://developer.android.com/training/data-storage#filesinternal

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

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

  1. AIDL 是具有并行操作的两种方式。
  2. 信使是双向的,但不是并行的
  3. 单向广播 此外,您可以使用套接字,但不推荐这样做。