Zugriff auf die Anwendungsklasse in Broadcast Receiver

7

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.

  1. Was sind die Bedenken?

  2. Wie kann ich auf meine Anwendungsklasse in Broadcast Receiver zugreifen?

  3. Gibt es eine bessere Lösung, um die Internetverbindung zu überprüfen, globale Variable zu setzen und meinen Statusbild zu ändern?

Mr.Hyde 18.07.2014, 13:01
quelle

2 Antworten

26

Sie können auf Ihre Klasse Application in BroadCastReceiver zugreifen, indem Sie ihren Kontext verwenden,

%Vor%     
Lalit Poptani 18.07.2014, 13:04
quelle
1

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.

    
j2esu 21.12.2016 17:07
quelle