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).