Posts Tagged: RPC


13
Mai 11

Selbstdefinierte Parcelable Objects während eines Android AIDL RPC / IPC Aufrufs benutzen

In meinem letzten Beitrag “Using the Android Interface Definition Language (AIDL) to make a Remote Procedure Call (RPC) in Android” habe ich die Grundlagen erläutert, wie die Kommunikation zwischen Prozessen in Android umgesetzt werden kann. Jetzt werden wir einen Blick auf ein Spezialgebiet in diesem Bereich werfen: Parcelables als Parameter einer AIDL Methode.

Wie im letzten Beitrag beschrieben, ist es möglich, entweder primitive Java Typen innerhalb einer Remote-Method Signature oder irgendeine Klasse, die das android.os.Parcelable Interface implementiert, zu benutzen. Über dies Interface ist es möglich, beliebig komplexe Datentypen zu definieren, die als Parameter oder Rückgabewerte von Methoden während eines Remote Method Aufrufs genutzt werden können.

Ich habe eine modifizierte Version des ersten Beispiel-Apps kreiert, um Ihnen ein einfaches Beispiel zu geben, das ein Parcelable Object als Methoden-Rückgabewert nutzt. Das Beispiel besteht aus einem Service, der ein Parcelable Message Object erzeugt, das die aktuelle Systemzeit sowie das Erscheinungsbild des Textes, wie Farbe, Größe und Stil, enthält. Im zweiten Teil des Beispiels finden Sie eine Activity, die mit dem AIDL IPC ein solches Message Object erzeugt, um die aktuelle Uhrzeit anzuzeigen. Die entsprechenden Projekte sind AIDLRemoteClientUsingParcelableObject für das Client-Projekt (enthält die Activity) und AIDLRemoteMessageServiceUsingParcelableObject für den Server (enthält den Service).


26
Apr 11

In Android einen Remote Procedure Call (RPC) mit der Android Interface Definition Language (AIDL) durchführen

Es gibt verschiedene Möglichkeiten, mit einem Service zu kommunizieren. Ein häufig gebrauchter Ansatz ist die Verwendung von Intents, wobei der Service entsprechend der durchgeführten Intent-Action reagieren kann. Dies ist einfach zu realisieren, aber wenn der Service viele verschiedene Operationen definiert, kann der resultierende Code sehr komplex und dadurch nur schwer wartbar werden. Wenn Intents verwendet werden, muss der Entwickler sich außerdem immer darum kümmern, die Parameter zu dem Intent hinzuzufügen; und nachdem das Ergebnis empfangen wurde, müssen die Ergebnis-Parameter aus dem Intent extrahiert werden. Dies führt zu einem erhöhten Programmier-Overhead innerhalb des Clients wann immer eine Remote-Funktionalität aufgerufen wird, was zu fehleranfälligem Code führen kann.

Zur Vermeidung dieser Nachteile kann der integrierten Remote Procedure Call (RPC) Mechanismus von Android verwendet werden. Zur Demonstration der Verwendung von RPCs in Android habe ich ein einfaches Beispiel erstellt. Dieses Beispiel besteht aus zwei Apps, wobei das erste einen Service und das zweite eine Activity enthält. Die Activity verbindet sich mit dem Service mit Hilfe des Android-RPC-Mechanismus und fordert einen string vom Service an. Continue reading →