1

In meiner Anwendung, ich mache eine Einrichtung (einschließlich Aufrufe an unseren Server) auf Anwendung onCreate-Methode. Auf der anderen Seite verwenden wir einen broadcastReceiver, um die Änderungen der Konnektivität zu erhalten. Alles scheint gut zu funktionieren, aber wenn wir die Anwendung beenden und dann die Konnektivität geändert wird, wird die onCreate-Methode der Anwendung aufgerufen, die einen Aufruf an unseren Server verursacht, der nicht ausgeführt werden sollte. Ist das das normale Verhalten? Wie können wir vermeiden, dass die onCreate-Methode bei Verbindungsänderungen aufgerufen wird?Connectivity broadcastReceiver Aufrufe OnCreate-Methode der Anwendung

Der Konnektivität Rundfunkempfänger wird auf diese Weise in der AndroidManifest konfiguriert:

<receiver android:name="x.ConnectivityReceiver" android:label="ConnectivityReceiver"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

Vielen Dank im Voraus.

Antwort

1

Dies ist normales Verhalten, da Ihre Anwendung für Ihre BroadcastReceiver gestartet (erstellt) wird. Die einzige Möglichkeit zu verhindern, dass onCreate aufgerufen wird, ist das Entfernen Ihrer BroadcastReceiver.
Sie könnten Ihren Empfänger dynamisch in Ihrer Anwendungsklasse oder einer Aktivität anstatt im Manifest registrieren. Ich weiß nicht, ob das Ihren Bedürfnissen entspricht, aber

+0

Vielen Dank für Ihre Antwort. Dann denke ich, dass ich die Übertragung in meiner Anwendungsklasse registrieren muss. Aber dann wird es nie unregistriert sein, wäre es ein Problem? – FVod

+0

Sie können die Registrierung in 'onTerminate' oder an einem anderen Punkt aufheben. Wenn Sie die Registrierung nicht aufheben und Ihre Anwendungen beendet sind, sehen Sie einen Stacktrace in logcat, der besagt, dass der Empfänger leckt. Ich glaube jedoch, dass es keine fatale Ausnahme ist – 0xDEADC0DE