谁能告诉我Android中所有的IPC机制是什么?
据我所知是:
- 意图
- 绑定
IPC是进程间通信。它描述了不同类型的android组件之间相互通信的机制。
1) Intents
是组件可以发送和接收的消息。它是在进程之间传递数据的通用机制。在意图的帮助下,可以启动服务或活动,调用广播接收器等等。
2) Bundles
是经过的数据实体。它类似于对象的序列化,但在android上要快得多。Bundle可以通过getExtras()
方法从intent中读取。
3) Binders
是允许活动和服务获得对另一个服务的引用的实体。它不仅允许向服务发送消息,还允许直接调用服务上的方法。
Android中有三种IPC机制:
- intent (with Bundles)
- 绑定 ASHMEM(匿名共享内存)- Linux共享内存和这个共享内存的主要区别是,在Linux中,其他进程不能释放共享内存,但是在这里,如果其他进程需要内存,这个内存可以由Android操作系统释放。
这篇文章中所有的答案都很好,很简洁。但是我想阐明我们应该使用哪种IPC机制。首先,IPC
意味着Inter Process communication
,其中两个应用程序或进程将通过在它们之间传递一些数据来相互通信。由于android是用于嵌入式和小型设备的,我们不应该为IPC
使用serialization
,而可以使用内部使用parcels
的BINDERs
。Parcel
是一种使用共享内存概念的轻量级序列化。
绑定IPC和序列化IPC有很多不同之处:
1。序列化在嵌入式设备中使用非常繁重,通信将非常缓慢。
2。 binder使用包裹使IPC非常快
3。 binder内部使用共享内存概念,在两个进程之间共享数据时使用较少的内存。
底线: Binders
使用更少的内存,并且相当快,因为它使用包。Serialization
非常重,需要时间来发送和接收数据,并且与binder相比需要更多的内存。
注意:要在活动、服务和接收器之间传递数据,只能使用 bundle 。不要选择序列化或绑定。绑定器仅用于两个进程通信的绑定器服务。
希望这对你有帮助
在Android开发者页面上写的,Android中的IPC机制包括:
- intent (with Bundles included)
- 带有Service的binder或信使
- broadcastreceiver
有三种IPC机制:
- <
- 处理程序/gh>
- 实现粘结剂
- AIDL
Android中特定于树的进程间通信是:
- AIDL是一种双向并发操作。
- messager是双向的,但不是并发的
- 单向广播此外,您可以使用套接字,但不建议使用。
另一个对我有效的解决方案是使用内部文件:
https://developer.android.com/training/data-storage filesInternal
从一个进程写入,关闭文件,从另一个进程读取