Ein Widget in Android ist quasi ein Broadcast-Receiver, der im Manifest angemeldet wird. Das erwähne ich hier gleich als Erstes, da ich mir das Widget wie eine Art Fragment bzw. Activity vorgestellt hatte, also mit einem eigenen Lifecycle. Das ist aber nicht so! Ein BroadcastReceiver "lebt" quasi so lange, wie seine onReceive() Methode aufgerufen wird. D.h. konkret, dass keine Daten dauerhaft in meinem BroadcastReceiver gespeichert werden (das kann damit gelöst werden, indem die Daten entweder in einer DB, auf der Festplatte gespeichert werden oder einfach in den System Properties abgespeichert werden). Aber erst mal eins nachdem anderen:
- Damit ein App-Widget existieren kann, werden folgende Objekte benötigt:
- AppWidgetProviderInfo -> beschreibt die Meta-Daten für das Widget (Layout, Häufigkeit von Updates usw.)
- AppWidgetProvider -> das ist unser "BroadcastReceiver" (hier werden die Funktionen definiert, die ausgeführt werden, wenn ein Button im Widget angeklickt wurde)
- Widget Layout
- AppWidgetConfigure -> muss der User, bevor er das Widget nutzen kann, Einstellungen vornehmen, so können diese in einer gesonderten Activity durchgeführt werden. Werden keine Einstellungen benötigt, so kann dieser Teil ignoriert werden
- Eine gute Anleitung ist auf der Android-Developer Seite zu finden
- Hier möchte ich nur eine kleine Liste der wichtigen Punkte erwähnen, die für ein funktionsfähiges Widget benötigt werden
- zunächst sollte das Widget im Manifest deklariert werden (-> siehe Anleitung)
- als nächstes werden die AppWidgetProviderInfos in einem Unterordner der Resourcen erstellt (-> res/xml)
- dann wird das App-Widget Layout erstellt (-> hierzu auf jeden Fall den Widget-Layout Abschnitt in der Anleitung durchlesen, da nicht alle Elemente von einem Widget unterstützt werden, Bsp.: EditText)
- zum Schluß wird der Provider (-> also der BroadcastReceiver) erzeugt
- Optional kann am Ende die AppWidgetConfigure Activity initialisiert werden (diesen Punkt lasse ich aber vorerst mal weg)
- Kommunikation innerhalb des Widgets (es wird ein Button gedrückt und dieser aktualisiert den Inhalt des Widgets)
- Kommunikation zwischen Widget und App
- Widget initialisiert App
- App erzwingt ein Update des Widgets
Keine Kommentare:
Kommentar veröffentlichen