LitteM
- Forum-Beiträge: 141
22.07.2013, 20:59:55 via Website
22.07.2013 20:59:55 via Website
Hallo zusammen,
ich habe zwei Activities. Folgendes Problem tritt auf:
Die zweite Activity wird von der ersten aufgerufen. In dieser zweiten Activity hab ich einen TCP socket der Nachrichten von einem Server bekommt. Falls dieser Server nicht erreichbar ist habe ich in der Exception eine runOnUiThread mit folgendem Code implementiert:
Soweit funktioniert alles. Nun habe ich eine "zurück" Option zur ersten Activity eingebaut. Bevor diese Activity beendet wird, lasse ich den Thread der die TCP Nachrichten empfängt auslaufen und springe dann zur ersten Activity zurück.
Jetzt macht mir aber der Socket einen Strich durch die Rechnung. Selbst wenn die Verbindung zum Socket "quasi" getrennt wurde, hält Java by default die Verbindung für einen kurzen Zeitraum für Pakete offen, die verspätung hatten.
Da ich aber mittlerweile meine Activity schon geschlossen habe ist der Context für den dialog weg und im falle eines zu spät eintreffendes paketes wird ne fatal exception geschmissen. Dies verursacht mir dann einen super tollen force close
Hat jemand eine Idee wie ich mir da abhilfe verschaffen kann? Etwas plump gedacht könnte ich die Boolean variable welche mir den Thread beendet abfragen, bevor ich runOnUiThread ausführe. Ich habs allerdings noch nicht ausprobiert - gibts da nicht irgendwie was schöneres oder wäre das die einzige Lösung?
Offen für jegliche Vorschläge
ich habe zwei Activities. Folgendes Problem tritt auf:
Die zweite Activity wird von der ersten aufgerufen. In dieser zweiten Activity hab ich einen TCP socket der Nachrichten von einem Server bekommt. Falls dieser Server nicht erreichbar ist habe ich in der Exception eine runOnUiThread mit folgendem Code implementiert:
1runOnUiThread(new Runnable() {
2 public void run() {
3 AlertDialog.Builder dialog = new AlertDialog.Builder(Localisation.this);
4 dialog.setTitle("Connection timed out");
5 dialog.setMessage("Failed to connect to server. Please check the Wifi connection.");
6 dialog.setNeutralButton("OK", null);
7 dialog.create().show();
8 }
9 });
2 public void run() {
3 AlertDialog.Builder dialog = new AlertDialog.Builder(Localisation.this);
4 dialog.setTitle("Connection timed out");
5 dialog.setMessage("Failed to connect to server. Please check the Wifi connection.");
6 dialog.setNeutralButton("OK", null);
7 dialog.create().show();
8 }
9 });
Soweit funktioniert alles. Nun habe ich eine "zurück" Option zur ersten Activity eingebaut. Bevor diese Activity beendet wird, lasse ich den Thread der die TCP Nachrichten empfängt auslaufen und springe dann zur ersten Activity zurück.
Jetzt macht mir aber der Socket einen Strich durch die Rechnung. Selbst wenn die Verbindung zum Socket "quasi" getrennt wurde, hält Java by default die Verbindung für einen kurzen Zeitraum für Pakete offen, die verspätung hatten.
Da ich aber mittlerweile meine Activity schon geschlossen habe ist der Context für den dialog weg und im falle eines zu spät eintreffendes paketes wird ne fatal exception geschmissen. Dies verursacht mir dann einen super tollen force close
Hat jemand eine Idee wie ich mir da abhilfe verschaffen kann? Etwas plump gedacht könnte ich die Boolean variable welche mir den Thread beendet abfragen, bevor ich runOnUiThread ausführe. Ich habs allerdings noch nicht ausprobiert - gibts da nicht irgendwie was schöneres oder wäre das die einzige Lösung?
Offen für jegliche Vorschläge
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.