App nur bei Bedarf (über WLAN) mit Server synchronisieren (im Hintergrund)

  • Antworten:4
Andreas Hoffmann
  • Forum-Beiträge: 36

13.01.2013, 13:50:11 via Website

Hallo liebe Leute,:D

ich bin gerade dabei eine App zu entwickeln, stehe aber momentan vor einem kleinen Problem.
Ich wollte es so realisieren, dass die App erst verbindung mit dem Server aufnimmt, wenn neue Informationen vorliegen. Das würde ich zum Beispiel aus der Datenbank lesen. Für's erste würde mir reichen, wenn die Verbindung nur bei WLAN aufgebaut wird (es werden größere Dateien versendet), besser wäre es allerdings, wenn der Benutzer entscheiden kann zwischen WLAN und Mobilfunk. Für die Datenübertragung muss die App nicht geöffnet sein, sonder es soll im Hintergrund stattfinden.

Nun zu meinen Fragen/Problemen::wacko:

  • Wie kann ich es einrichten, dass die App nur bei Bedarf synchronisiert wird? Evtl. einen Service, den ich starte wenn neue Dateien vorhanden sind?
  • Wie kann ich es einrichten, dass nur bei WLAN-Verbindung übertragen wird? Ich habe mir BroadcastReceiver angeschaut, aber nichts brauchbares entdeckt
  • Wie richte ich alles ein, damit nicht unnötig Rechenleistung verbraucht wird? Zum Beispiel einen Service der arbeitet obwohl keine Wlan-Verbindung vorhanden ist.

Ich hoffe ihr habt ein paar braucbaren Tipps für mich. Es gibt ja viele Apps, bei denen Daten nur bei WLAN übertragen werden oder bei denen man entscheiden kann. Leider habe ich nichts im Netz gefunden. Kann natürlich auch sein, dass ich die falschen Stichwörter bei der Suche verwendet habe. :wink:

LG =)

— geändert am 13.01.2013, 13:52:08

Antworten
Appsoluts
  • Forum-Beiträge: 304

14.01.2013, 03:17:58 via Website

Dazu gibt es mehrere Möglichkeiten,

Komplett ohne BroadcastReceiver...

Du lässt einen Service intervallmäßig prüfen, ob neue Daten vorhanden sind.

Du kannst einfach den Netzwerk Status abfragen, ob eine WLAN Verbindung verfügbar ist und wenn JA dann starte den Sync Service wenn NEIN dann halt nicht

android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if( state != NetworkInfo.DetailedState.CONNECTED ){
return false;
}
return true;

Antworten
Andreas Hoffmann
  • Forum-Beiträge: 36

14.01.2013, 16:56:50 via Website

Danke für deine Antwort =) Ich kenne mich leider im Bereich Service noch nicht so gut aus. Wie kann ich es denn mach, dass der Service das Intervalmäßig prüft? Thread.sleep sollte man glaube ich nicht nehmen!?

Antworten
Appsoluts
  • Forum-Beiträge: 304

15.01.2013, 01:58:54 via Website

Bloß noicht nehmen ;)

Such mal nach dem AlarmManager, du kannst im AlarmManager definieren, dass ein Service alle XX Millisekunden laufen soll

Antworten