What are the IPC mechanisms available in the Android OS?
Asked Answered
P

7

76

Will any one please tell me what are all the IPC mechanisms that are present in Android.

To my knowledge are:

  1. Intents
  2. Binders
Primacy answered 21/4, 2011 at 6:22 Comment(0)
P
44

There are three types of IPC mechanism in Android:

  1. Intents (along with Bundles)
  2. Binders
  3. ASHMEM (Anonymous Shared Memory) - The main difference between Linux shared memory and this shared memory is, in Linux other processes can't free the shared memory but here if other processes require memory this memory can be freed by Android OS.
Primacy answered 9/5, 2011 at 9:40 Comment(5)
Doesnt AIDL come in this ??Oleson
Binders include AIDL. It's only an language, which helps you generating the Binder Interface for the IPC.Brezin
Only uses ASHMEM if you know what you're doing. The compatibility between different android versions is not guaranteed.Georgiannegeorgic
Should be added UNIX sockets and pipesBlowfly
What about Content Providers and Broadcasts?Moffett
T
103

IPC is inter-process communication. It describes the mechanisms used by different types of android components to communicate with one another.

1) Intents are messages which components can send and receive. It is a universal mechanism of passing data between processes. With help of the intents one can start services or activities, invoke broadcast receivers and so on.

2) Bundles are entities of data that is passed through. It is similar to the serialization of an object, but much faster on android. Bundle can be read from intent via the getExtras() method.

3) Binders are the entities which allow activities and services to obtain a reference to another service. It allows not simply sending messages to services but directly invoking methods on them.

Tytybald answered 21/4, 2011 at 6:31 Comment(5)
and this universal mechanism is implemented by the means of ...what? (expecting something among the lines of kernel system calls, extensions to java found in dalvik, etc.)Umbelliferous
Bundle could be seen as coming with Intent, and don't forget BroadcastReceiver. Here are the words from Android Official Page: "We strongly encourage you to instead use Android system functionality for IPC such as Intent, Binder or Messenger with a Service, and BroadcastReceiver". developer.android.com/training/articles/security-tips.html#IPCSennight
Can someone please add examples? Newcomers would understand it faster if there are use cases for each IPC type.Gratulation
different types of android components or different types of Android process?Aksum
Doesn't the "binder" actually bases all mentioned mechanisms in Android? We know Android Binder Framework provides the kernel capability for IPC.Sulfurous
P
44

There are three types of IPC mechanism in Android:

  1. Intents (along with Bundles)
  2. Binders
  3. ASHMEM (Anonymous Shared Memory) - The main difference between Linux shared memory and this shared memory is, in Linux other processes can't free the shared memory but here if other processes require memory this memory can be freed by Android OS.
Primacy answered 9/5, 2011 at 9:40 Comment(5)
Doesnt AIDL come in this ??Oleson
Binders include AIDL. It's only an language, which helps you generating the Binder Interface for the IPC.Brezin
Only uses ASHMEM if you know what you're doing. The compatibility between different android versions is not guaranteed.Georgiannegeorgic
Should be added UNIX sockets and pipesBlowfly
What about Content Providers and Broadcasts?Moffett
Z
25

All the answers are good and concise in this post. But I would like to light upon which IPC mechanism should we use. First of all IPC means Inter Process communication where two applications or processes will communicate with each other by passing some data between them. Since android is meant for embedded and small devices, we should not use serialization for IPC, rather we can use BINDERs which internally uses parcels. Parcel is a sort of light weight serialization by using shared memory concept.

There are many differences between Binder IPC and Serialization IPC:

1. Serialization is very heavy to use in embedded devices, communication will be very slow.

2. Binders uses Parcels to make IPC very fast.

3. Binders internally uses Shared memory concept which uses less memory while sharing data between two processes.

Bottom Line: Binders uses less memory, and quite fast as it uses parcels. Serialization is very heavy, takes time to send and receive data, and also it takes more memory compared to binders.

Note: To pass data between activities, services, and receivers use only Bundles. Don't go for either serialization or binders. Binders are specifically used only for binder services where 2 processes will communicate.

Hope this Helps :)

Zoologist answered 17/2, 2016 at 7:57 Comment(0)
G
22

As written on Android Developers page, IPC mechanisms in Android include:

  • Intents (with Bundles included)
  • Binders or Messengers with a Service
  • BroadcastReceivers
Garrow answered 7/2, 2014 at 14:18 Comment(1)
All of them are based on binder IPC.Rorrys
T
6

There are three types of the IPC mechanisms:

  1. handler
  2. implementing binder
  3. AIDL
Tetrachloride answered 17/9, 2012 at 11:50 Comment(1)
handler is not. Messenger is.Hypopituitarism
T
2

The tree specific inter-process communications in Android are:

  1. AIDL which is a two way with concurrent operation.
  2. Messanger aa a two way but not concurrent
  3. Broadcast as a one way Also, you can use sockets but it's not recommended.
Touchandgo answered 15/12, 2021 at 21:47 Comment(0)
F
0

Another solution that worked for me was using the Internal files:

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

Write from one process, close file, read from another.

Frisco answered 29/1, 2021 at 10:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.