有没有人能告诉我 Android 中所有的 IPC 机制是什么。
据我所知是:
它描述了不同类型的 android 组件之间通信所使用的机制行程间通讯。
1) Intents是组件可以发送和接收的消息。它是在进程之间传递数据的通用机制。在意图的帮助下,人们可以启动服务或活动,调用广播接收器等等。
Intents
2) Bundles是传递数据的实体。它类似于对象的序列化,但在 android 上要快得多。可以通过 getExtras()方法从意图中读取 Bundle。
Bundles
getExtras()
3) Binders是允许活动和服务获得对另一个服务的引用的实体。它不仅允许向服务发送消息,而且允许直接调用服务上的方法。
Binders
Android 中有三种类型的 IPC 机制:
IPC 机制有三种类型:
正如在 Android 开发者页面上所写的,Android 中的 IPC 机制包括:
在这篇文章中,所有的回答都是好的和简洁的。但是我想指出的是 我们应该使用 IPC 机制。首先,IPC意味着 Inter Process communication,其中两个应用程序或进程通过在它们之间传递一些数据相互通信。由于 android 是用于嵌入式和小型设备,我们不应该使用 serialization的 IPC,而是我们可以使用 BINDERs的内部使用 parcels。Parcel是一种采用共享内存概念的轻量级序列化。
IPC
Inter Process communication
serialization
BINDERs
parcels
Parcel
Binder IPC 和 Serialization IPC 之间有很多不同之处:
在嵌入式设备中使用串行化非常繁重,通信会非常慢。 Binders 使用 Parcels 使 IPC 变得非常快 绑定器内部使用共享内存概念,在两个进程之间共享数据时使用较少的内存。
底线: Binders使用较少的内存,而且相当快,因为它使用了包。Serialization非常重,需要时间来发送和接收数据,而且它需要更多的内存比活页夹。
Serialization
注意: 要在活动、服务和接收者之间传递数据,只能使用 一捆一捆的。不要使用序列化或活页夹。绑定器仅用于两个进程通信的绑定器服务。
希望这个有帮助:)
另一个对我有效的解决方案是使用内部文件:
Https://developer.android.com/training/data-storage#filesinternal
从一个进程写入,关闭文件,从另一个进程读取。
Android 中特定于树的进程间通信如下: