web-dev-qa-db-fra.com

Exemple d'utilisation d'AIDL

pour comprendre la AIDL dans Android, je veux un exemple concret, signifie quel scénario de développement nous devons utiliser AIDL.

en lisant les documents Android ... Cela me met dans la confusion et soulève de nombreuses questions. Il est donc difficile de lire tout le document pour moi.

  1. est-ce pour communiquer avec l'extérieur du téléphone?.

  2. ou de communiquer avec différentes applications (pourquoi nous devons communiquer avec d'autres applications)

  3. quel genre de service ils parlent dans docs 

44
Nixit Patel

AIDL est utilisé pour le liant. Le classeur est un mécanisme permettant d'effectuer des appels RPC sur/à partir d'un service Android.

Quand utiliser AIDL? Lorsque vous avez besoin d'un service. Quand avez-vous besoin d'un service? Si vous souhaitez partager des données et contrôler quelque chose dans une autre application, vous avez besoin d'un service utilisant AIDL comme interface. (Un fournisseur de contenu est utilisé lors du partage de données uniquement).

Les services peuvent être utilisés dans votre application en tant que modèle dans le modèle MVC.

38
Jordi

AIDL est un langage de définition d'interface Android. Cela vous permet essentiellement de faire des appels IPC. 

Utilisation: Il existe des situations dans lesquelles un processus doit parler à un autre pour obtenir certaines informations.

Exemple: Processus A a besoin d'informations sur l'état de l'appel pour déterminer si le type d'appel doit être modifié (par exemple, un appel audio vers vidéo ou vice-versa). Vous pouvez obtenir le statut des appels de certains auditeurs, mais pour changer le type d’appel d’audio à vidéo, Processus A nécessite un hook pour changer. Ce "crochet" ou méthode de changement d'appels fait généralement partie des classes de téléphonie qui font partie du processus de téléphonie. Ainsi, afin d'obtenir une telle information du processus de téléphonie, on peut écrire un service de téléphonie} (qui fait partie du processus de téléphonie Android), ce qui vous permettra d'interroger ou de modifier le type d'appel. Étant donné que processus A(Client)} utilise ce service distant qui communique avec processus de téléphonie pour modifier le type d'appel, il doit disposer d'un interface pour parler au service. Puisque service de téléphonie} _ est le fournisseur et le processus A (client)} _ est l'utilisateur, ils doivent tous deux se mettre d'accord sur une interface (protocole) qu'ils peuvent comprendre et respecter. Une telle interface est AIDL, qui vous permet de parler (via un service distant) au processus de téléphonie et d'effectuer certains travaux.

En termes simples, AIDL est un "accord" obtenu par le client, qui lui explique comment parler au service. Service lui-même aura une copie de cet accord (puisqu'il a été publié pour ses clients). Le service implémentera ensuite des détails sur la façon dont il traite une fois qu'une demande est arrivée ou dit quand quelqu'un lui parle

Donc, traiter une demande de changement d'appel via Service, Service reçoit la demande, il parle au processus de téléphonie (puisqu'il en fait partie) et change l'appel à la vidéo.

Un point important à noter est que AIDL n'est nécessaire que pour un environnement multithreading. Vous pouvez supprimer les classeurs si vous n'avez pas besoin de traiter avec Arch multithread.

15
GodOnScooter

Un autre exemple concret est Google Play License utilise AIDL.

3
stuckedoverflow

1 - est-ce pour la communication avec l'extérieur du téléphone? Sa communication avec l'extérieur de l'application.

2 - ou pour communiquer avec différentes applications (pourquoi nous devons communiquer avec d'autres applications) Comme @GodOnScooter l'a mentionné, lorsque votre application communique avec un service de téléphonie, il s'agit en réalité d'une autre partie.

3 - de quel type de service parle-t-on dans les docs?

Il s'agit d'un service qui s'exécute dans différents processus d'un système. Pour vous connecter à ce service, vous avez besoin de l'IPC (communication inter-processus), AIDL est utilisé pour l'implémenter.

0
Muhammad Haris