Ich möchte die Internetverbindung im Broadcast Receiver überprüfen; Und setze result (Ein boolesches Flag) auf eine globale Variable, um es in if-Bedingungen für die gesamte Anwendung zu verwenden. Wenn das Internet nicht verbunden ist, stellen Sie einen Status-Image-View in der Hauptaktivität auf ein rotes Bild und, falls verbunden, auf Grün.
Ich folgte diesem Thema. Aber es gibt kein getApplication()
in Broadcast Receiver; Und ich sollte stattdessen getApplicationContext()
verwenden.
Auf einer anderen Seite dieses Thema:
beim Schreiben von Code in einen Broadcast-Empfänger, der aber kein Kontext ist In der onReceive-Methode wird ein Kontext angegeben, den Sie nur aufrufen können getApplicationContext (). Das bedeutet auch, dass Sie nicht garantiert sind Zugriff auf Ihre Anwendung in einem BroadcastReceiver haben.
Was sind die Bedenken?
Wie kann ich auf meine Anwendungsklasse in Broadcast Receiver zugreifen?
Gibt es eine bessere Lösung, um die Internetverbindung zu überprüfen, globale Variable zu setzen und meinen Statusbild zu ändern?
Sie können auf Ihre Klasse Application
in BroadCastReceiver
zugreifen, indem Sie ihren Kontext verwenden,
Vielleicht wird es jemandem helfen. Wenn Sie eine eigene Anwendungsklasse verwenden:
%Vor%Dann können Sie App.get () in Ihrem Broadcast-Empfänger verwenden. Laut onCreate () Dokumentation wird es aufgerufen, bevor der Empfänger anruft.
Wird aufgerufen, wenn die Anwendung gestartet wird, bevor Aktivitäts-, Service- oder Empfängerobjekte (mit Ausnahme von Inhaltsanbietern) erstellt wurden.
Tags und Links android broadcastreceiver android-broadcast android-lifecycle