Sie müssen diese Informationen selbst speichern. Normalerweise verwende ich die Anwendungspräferenzen, aber Sie können alles verwenden. Im Allgemeinen verwenden Widgets Dienste, um zu kommunizieren. Ihr Code, der solche Aufgaben erledigt, befindet sich wahrscheinlich in einem Dienst, aber wenn Sie diese Einstellung verwenden, kann jeder Teil Ihrer App darauf zugreifen.
In Ihrer Widget-Klasse, die AppWidgetProvider erweitert, wird onEnabled aufgerufen, wenn das Widget auf einem Homescreen platziert wird und das onDeleted (normalerweise) aufgerufen wird, wenn es entfernt wird. onDisabled wird aufgerufen, wenn alle Kopien entfernt wurden.
Also im Code Ihres Widget-Providers:
%Vor%An anderer Stelle im Code würden Sie prüfen, ob das Widget aktiv ist:
%Vor%Ich weiß, es ist eine alte Frage, aber als ich dies heute ansah, sah ich, dass es ein paar Probleme mit der akzeptierten Antwort von @ larsona1 gibt:
Ich habe eine Lösung für das erste Problem gefunden. Es sind überhaupt keine gemeinsamen Präferenzen erforderlich, da es ohnehin unzuverlässig ist. Es muss in Runtime überprüft werden.
%Vor%In Ihrem Widgetanbieter:
%Vor%Und fügen Sie in Ihrem Servicecode Folgendes hinzu:
%Vor%@Waza_Be ist richtig, wenn Sie sich die "AppWidgetIds" -Liste ansehen, um die Anzahl der aktiven Widgets (die auf Ihrem Startbildschirm installierten) zu kennen, ist der richtige Weg, diese Informationen zu kennen.
Beachten Sie jedoch, dass Sie sich das nicht alleine ansehen sollten.
Sehen Sie in der offiziellen Android-Dokumentation nach, wie Widgets am besten funktionieren: Ссылка
Der richtige Ansatz besteht darin, nur die onUpdate () -Methode zu überschreiben und die Liste der "aktiven" Widgets zu durchlaufen:
%Vor%Und wenn Ihr eigener Widget-Provider AppWidgetProvider überschreibt, werden Sie NICHT zur onUpdate () -Methode gehen, wenn auf dem Startbildschirm keine Widgets aktiv sind!
Siehe den onReceive () - Code von Android AppWidgetProvider, der für Sie bereits überprüft, dass "appWidgetIds.length & gt; 0":
%Vor%Tags und Links android homescreen widget place