web-dev-qa-db-fra.com

Quels sont les mécanismes IPC disponibles dans le système d'exploitation Android?

Quelqu'un peut-il me dire quels sont tous les mécanismes IPC présents dans Android.

À ma connaissance sont:

  1. Intentions
  2. Liants
60
Suman

Il existe trois types de mécanisme IPC dans Android:

  1. Intentions (avec Bundles)
  2. Liants
  3. ASHMEM (Anonymous Shared Memory) - La principale différence entre la mémoire partagée Linux et cette mémoire partagée est que, sous Linux, d'autres processus ne peuvent pas libérer la mémoire partagée mais ici si d'autres processus nécessitent de la mémoire, cette mémoire peut être libérée par Android OS.
35
Suman

IPC est une communication inter-processus. Il décrit les mécanismes utilisés par différents types de composants Android pour communiquer entre eux.

1) Intents sont des messages que les composants peuvent envoyer et recevoir. Il s'agit d'un mécanisme universel de transmission de données entre les processus. Avec l'aide des intentions, on peut démarrer des services ou des activités, invoquer des récepteurs de diffusion, etc.

2) Bundles sont des entités de données transmises. Elle est similaire à la sérialisation d'un objet, mais beaucoup plus rapide sur Android. Le bundle peut être lu à partir de l'intention via la méthode getExtras().

3) Binders sont les entités qui permettent aux activités et services d'obtenir une référence à un autre service. Il permet non seulement d'envoyer des messages aux services, mais d'appeler directement des méthodes sur eux.

85
Vladimir Ivanov

Comme écrit sur page Développeurs Android , IPC dans Android incluent:

  • Intentions (avec Bundles inclus)
  • Liants ou messagers avec un service
  • BroadcastReceivers
22
lomza

Toutes les réponses sont bonnes et concises dans ce post. Mais je voudrais savoir sur quel mécanisme IPC dois-je utiliser . Tout d'abord IPC signifie Inter Process communication où deux applications ou processus communiqueront entre eux en passant des données entre eux. Puisque Android est destiné aux appareils intégrés et petits, nous ne devons pas utiliser serialization pour IPC, nous pouvons plutôt utiliser BINDERs qui utilise en interne parcels. Parcel est une sorte de sérialisation légère en utilisant le concept de mémoire partagée.

Il existe de nombreuses différences entre Binder IPC et Serialization IPC:

1. La sérialisation est très lourde à utiliser dans les appareils embarqués, la communication sera très lente.

2. Binders utilise Parcels pour rendre IPC très rapide.

3. Binders utilise en interne le concept de mémoire partagée qui utilise moins de mémoire tout en partageant des données entre deux processus.

Bottom Line:Binders utilise moins de mémoire, et assez rapide car il utilise des parcelles. Serialization est très lourd, prend du temps pour envoyer et recevoir des données, et il prend également plus de mémoire par rapport aux classeurs.

Remarque: Pour transmettre des données entre les activités, les services et les récepteurs, utilisez uniquement Bundles. N'allez pas pour la sérialisation ou les classeurs. Les classeurs sont spécifiquement utilisés uniquement pour les services de classeur où 2 processus communiqueront.

J'espère que cela aide:)

16
Setu Kumar Basak

Il existe trois types de mécanismes IPC:

  1. gestionnaire
  2. implémentation de liant
  3. AIDL
5
swap