2016-07-25 16 views
0

Ich lese über Interprozesskommunikation (IPC) und Erstellen von Daten senden von einer Komponente zu einer anderen Komponente.
Was ich wusste ist, dass IPC den Kommunikationskanal zwischen den verschiedenen Komponenten definiert.
Der Kanal verfügt über Programmierschnittstellen für die Komponenten, über die Daten gesendet werden. Möglichkeiten zum Erstellen einer Schnittstelle sind beispielsweise AIDL, Binder und Messenger.
Nach dem Erstellen der Schnittstelle müssen die zu sendenden Daten Paket sein. Die Zusammenfassungsschritte lauten also wie folgt:
1. Erstellen Sie eine Programmierschnittstelle.
2. Binden Sie die Schnittstelle an eine Anwendungskomponente.
3. Komponenten, die Daten an diese Komponente senden, müssen Daten in Paket konvertieren.

Aber plötzlich gefunden, was heißt Intent, die Daten von einer Komponente zu einem anderen ohne diesen Overhead senden können.
Ich brauche Erklärung, wie Intent Daten senden kann, ohne dass eine Schnittstelle erstellt werden muss?
Ist Absicht intern eine Schnittstelle?
Welche Beziehung besteht zwischen Intent und IPC, gebundenem Service und Schnittstelle?Android: Absicht und Austausch von Daten zwischen den Komponenten

Antwort

2

Wow, Sie haben hier viel Verwirrung. Mal sehen, ob ich alles klären kann.

1) IPC sendet keine Daten von einer Komponente zur anderen (es kann, aber es ist eine ineffiziente Möglichkeit, das zu tun). IPC sendet Daten von einem Prozess zu einem anderen. Eine Android-App ist in der Regel ein Prozess, obwohl dies nicht unbedingt erforderlich ist (Dienste werden manchmal vom Entwickler in einen anderen Prozess gestellt). Der Grund dafür ist, dass Prozesse keinen Speicher teilen können. Deshalb werden spezielle Methoden wie IPC benötigt, um Daten zwischen ihnen zu senden.

2) Daten, die zwischen Komponenten gesendet werden, müssen kein Paket sein. Das ist die eine Art und Weise, wie Android beim Senden von Startparametern verwendet. Aber es ist nicht notwendig.

3) Die Verwendung eines Binders für die Kommunikation mit einem Dienst ist nur möglich, wenn beide Prozesse identisch sind. Es ist eine Methode, um die Verwendung von IPC vollständig zu vermeiden.

4) AIDL ist ein Wrapper um eine IPC-Methode. AIDL verwendet IPC, es versucht nur, es wie normale Funktionsaufrufe an den Client aussehen zu lassen.

5) Ein Intent-Objekt ist eine Abstraktion für alle Daten, die zum Starten eines Dienstes oder einer Aktivität in Android erforderlich sind. Es enthält Parameter, die in Paketen enthalten sein können oder nicht. Es kann IPC verwenden oder nicht, um diese Parameter zu senden (wenn die Zielaktivität oder der Dienst in einem anderen APK ist, wird es das tun. Wenn es nicht ist, darf es nicht).

Ich denke, das Problem hier ist, dass Sie nicht wirklich verstehen, was ein Prozess ist, was eine Android-Komponente ist und wie Prozesse tatsächlich kommunizieren. Ich schlage vor, etwas darüber zu studieren.

+0

So können wir sagen, dass die Kommunikation zwischen zwei Aktivitäten in demselben Prozess Binder verwendet wird und Intent ist eine Implementierung Android für den Binder? –