“In/out/inout” dans un AIDL interface paramètre valeur?
Je suis de la programmation d'une radio application de streaming. Je lance le "radio jouer" comme un Service distant en utilisant AIDL interface technique pour communiquer avec le Service. Mais je ne comprends pas vraiment une chose.
Qu'est-ce que le "de" dans un AIDL interface valeur de paramètre?
Comme ceci:
String doSomething(in String a, out String[] b);
Je comprends "dans", c'est-à envoyer des données à distance lorsque la méthode est appelée à partir de l'activité.
Qu'est-ce que le "out", et pourquoi nous avons besoin de "in" et "out" dans la même méthode? Dans quel cas sont-ils("out/inout") utilisés? Pourquoi le String[]
"out"?
S'il vous plaît aider..
- Je pense que @gladed répondu à votre question de manière exhaustive. Il serait bien si vous vérifier sa réponse.
Vous devez vous connecter pour publier un commentaire.
Dans AIDL, le
out
balise spécifie un paramètre de sortie-uniquement. En d'autres termes, c'est un paramètre qui contient des données intéressantes sur l'entrée, mais sera remplie avec des données au cours de la méthode.Par exemple, une méthode qui copie un tableau d'octets peut être spécifié comme ceci:
La
inout
étiquette indique que le paramètre a de sens à la fois d'entrée et de sortie. Par exemple:Ceci est important parce que le contenu de chaque paramètre doit être muselé (sérialisé, transmis, reçus et désérialisé). Le in/out tags permettent le Liant à sauter l'étape de triage pour de meilleures performances.
Ici ça va,
entrées
pour les sorties.
utilisé pour les entrées et les sorties.
Tous les non-primitif paramètres nécessitent une balise directionnelle indiquant de quelle manière les données. Soit in, out ou inout.
Primitives sont dans par défaut, et ne peut en être autrement
Exemple:
Veuillez vérifier les ci-dessous AIDL interface pour la comprendre dans une meilleure façon.
Ici, nous avons utilisé hors, dans, inout directionnelle des balises pour indiquer quelle façon les données.
getTeamCaptian(hors TeamMember membre) :
Obtenir le capitaine de l'équipe.
Ici, le "hors l'orientation de la balise signifie, lorsque le client appelle cette méthode, le "membre" objet n'a pas de données pertinentes,
mais le serveur doit apporter des modifications à la "membre" de l'objet, de sorte que le client doit obtenir la mise à jour de "membre" de l'objet.
En fait, l'appel de méthode est synchrone.
updateTeamMember(inout TeamMember membre, dans boolean isLeader) :
Mise à jour le capitaine de l'équipe.
Ici, le "inout l'orientation de la balise signifie, lorsque le client appelle cette méthode,le "membre" objet a données pertinentes en elle.
Et le serveur doit utiliser les données d'entrée et de la traiter. Une fois le processus terminé, le client doit obtenir les données pertinentes en arrière.
En fait, l'appel de méthode est synchrone.
removeTeamMember(en TeamMember membre)
Supprimer un membre de l'équipe.
Ici, le "dans l'orientation de la balise de moyens, le "membre" de l'objet est transféré du client au service uniquement utilisé pour les entrées.
Si des modifications sont apportées à la "membre" de l'objet dans le service, alors il ne reflète pas dans le client.
L'appel de méthode est asynchrone, nous pouvons mettre le "oneway" mot clé pour la signature de la méthode.
Méthodes asynchrones ne doit pas avoir "de" et "inout" arguments, ils doivent aussi retourner void.