Background Kommunikationsservice

  • Antworten:2
Richard S.
  • Forum-Beiträge: 5

31.01.2013, 12:03:50 via Website

Hallo,

ich habe ein echt komisches Problem. Erstmal kurz zum Thema. Ich schreibe eine Anwendung die mit einen TCP Server kommuniziert. Die Verbindung wird (dauerhaft) gehalten. Natürlich gibt es Momente wie kein Netz, kein Wlan etc. wo die Verbindung getrennt wird. Ist dies der Fall, warte ich einen kurzen Moment und überprüfe danach wieder ob ich eine neue Verbindung aufbauen kann.

Jetzt zu meinen Problem. Es ist dieser kurze Moment ... Ich starte einen Service und in der onStartCommand() Methode initialisiere ich ein Thread der die ganze Kommunikation abdeckt mit einer Schleife. Wenn die Verbindung verloren geht, mache ich ein einfaches Thread.Sleep für eine Minute und danach geht es wieder los. Diese eine Minute wird aber nicht eingehalten. Der Thread schläft manchmal zwischen 20 - 50 Minuten bevor er die Arbeit wieder aufnimmt ??? Wenn ich die Prozesspriorität vom Thread auf Max setzte ist die Wartezeit zwischen 1- 15 Minuten.

Warum funktioniert das Sleep für eine Minute nicht? Das ein Sleep nicht 100%ig genau ist, ist mir schon klar - aber gleich paar Minuten !?!?!
Muss ich den Service anders konfigurieren ....

Ich denke, dass hier das OS den Service komplett vernachlässigt.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

31.01.2013, 12:31:21 via Website

Wieso benutzt du nicht einen BroadcastReceiver und wartest bis das Netz wieder da ist ? Es gibt Intents dafür.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Richard S.
  • Forum-Beiträge: 5

31.01.2013, 12:46:22 via Website

Es gibt auch andere Möglichkeiten warum ein Neuaufbau nicht sofort gestartet werden soll. Beispiel wenn der Client nicht autorisiert ist sich mit dem Server zu verbinden. Hier soll der Client es halt aller eine halbe Stunde versuchen. Der Service soll im Hintergrund dauerhaft laufen.

Antworten