Die Alpha-Bibliothek Remote Compose ermöglicht die Erstellung interaktiver Gaming-Widgets auf Android
Public- 20 Oct, 2026

Android-Entwickler können nun hochinteraktive Gaming-Widgets mit der neuen Alpha-Bibliothek Remote Compose erstellen. Obwohl Jetpack Glance aufgrund seiner Abwärtskompatibilität und seiner Tooling-Unterstützung der Standard für die meisten Widget-Implementierungen bleibt, basiert er auf dem veralteten RemoteViews-System. Dieses Legacy-System weist erhebliche Einschränkungen auf, insbesondere die Unmöglichkeit, mathematische Ausdrücke für kontinuierliche Animationen zu verwenden, sowie die strenge systemseitige Kontrolle über die Größe und Häufigkeit von Updates. Remote Compose schließt diese Lücken, indem es einen flexiblen Rahmen für die Erstellung von Animationen und komplexen Interaktionen bietet, die zuvor unmöglich waren oder nicht unterstützte Hacks innerhalb des RemoteViews-Ökosystems erforderten.
Die Architektur von Remote Compose trennt die UI-Definition von der Ausführung. Ihre Anwendung führt deklarative Code aus, der mit @RemoteComposable annotiert ist, um Layouts und Animationsausdrücke in ein kompaktes Binärformat zu serialisieren, das als Remote Document bekannt ist. Dieses Dokument wird an den Host-Prozess gesendet, beispielsweise an den Home-Screen-Launcher. Innerhalb des Hosts übernimmt ein Remote Compose-Player die lokale Verarbeitung aller Interaktionen, Größenänderungen, Zustandswechsel und Animationen. Dieses Design ist vergleichbar mit einem Webbrowser, der ein HTML-Dokument rendert. Da der Player die Updates unabhängig in seinem eigenen Prozess verwaltet, muss die Hauptanwendung nicht aktiv bleiben. Dieser Mechanismus reduziert die Anzahl der Inter-Process Communication (IPC)-Runden erheblich, was zu geringeren Latenzen und einem reduzierten Akkuverbrauch im Vergleich zu traditionellen RemoteViews-Widgets führt, bei denen die App UI-Updates senden muss.
Um diese Technologie zu implementieren, müssen Entwickler bestimmte Abhängigkeiten in ihr Projekt hinzufügen, darunter remote-core, remote-creation und remote-creation-compose aus der Gruppe androidx.compose.remote, derzeit in der Version 1.0.0-alpha21. Die Widget-Klasse muss von RemoteComposeWidget erben, das AppWidgetProvider erweitert. Entwickler definieren die Benutzeroberfläche mit Remote Composables wie RemoteBox, RemoteColumn, RemoteRow und RemoteText. Die onUpdate-Methode kompiliert das Layout in ein serialisiertes Remote Document und sendet es über updateRemoteView an den Launcher. Obwohl Remote Compose die RemoteViews-Nutzlast als Transportmechanismus wiederverwendet, interagieren Entwickler nicht direkt mit dieser Transportschicht. Das System registriert das Widget über die standardmäßige Receiver-Konfiguration in der AndroidManifest.xml mit dem Intent-Filter APPWIDGET_UPDATE.
Das Zustandsmanagement in Remote Compose bietet zwei verschiedene Ansätze: hostlokale Zustände und Persistenz auf App-Seite. Hostlokale Zustände befinden sich im Remote Document auf dem Host-Gerät, was sie für ephemere Sitzungsdaten wie einen Spielscore eignet, der zurückgesetzt werden kann, wenn ein neues Dokument ausgegeben wird oder der Launcher neu gestartet wird. Persistenz auf App-Seite ist für Zustände erforderlich, die über Dokument-Updates und Launcher-Neustarts hinweg erhalten bleiben müssen, wie etwa das Inventar des Benutzers oder der Fortschritt. Da Android die App nicht über einen Neustart des Launchers im Hintergrund informiert und stattdessen das zuletzt zwischengespeicherte Dokument wiedergibt, müssen kritische Daten im Speicher der App abgelegt werden. Ein Widget für ein virtuelles Haustier könnte beispielsweise eine Münzwährung mit dem App-Store teilen, während ein Side-Scroller-Spiel seinen Score vollständig im Remote Document speichert.
Die Kernstärke von Remote Compose liegt in Ausdrucksgraphen mit dynamischen Referenzen. Diese Graphen sind mathematische Formeln, die als verbundene Knoten dargestellt werden, wobei einige Knoten Variablen enthalten, die als dynamische Referenzen bezeichnet werden. Der Host-Player aktualisiert diese Referenzen direkt, sodass die Widget-Oberfläche bei jedem Geräteframe aktualisiert werden kann, ohne den App-Prozess zu wecken. Entwickler erstellen diese Graphen indirekt über Code. So kann beispielsweise ein Tippzähler mit MutableRemoteInt und valueChange-Funktionen implementiert werden. Wenn ein Benutzer auf das Widget tippt, aktualisiert der Host die dynamische Referenz lokal. Dieser Mechanismus stellt sicher, dass selbst komplexe, framebasierte Animationen effizient auf dem Host-Gerät ausgeführt werden, während der App-Prozess in einem angehaltenen Zustand bleibt und Systemressourcen geschont werden.