Code ausführen, sobald Internet verfügbar

  • Hallo zusammen,


    welche Möglichkeiten habe ich, einen Code genau dann im Hintergrund auszuführen, sobald eine Internetverbindung besteht?
    Verlgeichbar mit dem Absenden einer Nachricht von Whatsapp: Habe ich keine Internetverbindung, kommt erst die Uhr - besteht die Verbindung irgendwann, wird die Nachricht automatisch im Hintergrund abgesendet.


    Momentan gehe ich so vor:
    1. Internet verfügbar: Gleich synchronisieren
    2. Kein Internet: Thread im Hintergrund mit sleeps so lange laufen lassen, bis Internet verfügbar ist (Pfusch in meinen Augen)


    Besonders problematisch ist bei meinem Ansatz, dass ich den Thread von unterschiedlcihen Stellen aus starte (z.B. auch bei einer empfangenen GCM-Nachricht).
    Ich weiß dann nicht, ob der Thread bereits läuft. Dazu habe ich dann eine Shared-Preferences-Variable mit der Uhrzeit der letten Synchronisierung.


    Alles so zusammengebastelt. Gibt es da eine bessere Möglichket?


    Vielen Dank! :)

  • Hi,


    was Du bracusht ist:

    Code
    <receiver android:name=".NetworkChangeReceiver" >
    <intent-filter>
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
    </receiver>


    Alles weitere findest du unter: http://ux5.de/2e4yl



    LG
    Micha

  • kleine Anmerkung noch: Es ist Geräte abhängig wie häufig der callback des Broadcastreceivers aufgerufen wird. Es kann also passieren, dass der User das Internet an macht und der Callback zwei oder sogar dreimal ausgeführt wird.

  • Da musst du aber unterscheiden.


    Einmal löst der reciver den callback aus, wenn dieser registriert wird. Und alle weiteren male nur noch beim status wechsel der Internetverbindung. Wie ich oben aber schon erwähnt habe, ist es geräteabhängig wie häufig der callback beim status wechsel ausgelöst wird.


    Wie überprüfst du ob ob es nun ein auslösen wegen des registrierens oder wegen eines status wechsels ist, bzw. ob es mehrfach wegen eines status wechsels aufgerufen wurde?
    Antwort: Statemachine

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!