Meine Anwendung habe einige Aktivitäten, die in der ersten einen Socket verbinden, um mit einem Server auf den anderen Aktivitäten zu kommunizieren. Dieser Socket wird in einem Worker-Thread ausgeführt.Schließen Sie die Steckdose beim Beenden der Anwendung
Meine Frage ist: Wo kann ich diese Buchse schließen, wenn die Anwendung fertig ist? Mit der BACK-Taste zum Beispiel ...
Ich dachte, schließen Sie den Socket in onDestroy()
der letzten Aktivität, aber diese Aktivität kann durch das System zur Laufzeit zerstört werden und schließen Sie den Socket, auch wenn die Anwendung nicht fertig ist. Ich will das nicht.
Meine run()
Methode der Thread die Anschlussbuchse Handhabung ist wie:
public void run() {
if (this.bliveclient.isConnected()){
try {
//...
while (running) {
//waiting for input data and do something...
}
}
catch (IOException ex) {
//handle exception
}
finally{
try {
mySocket.close();
} catch (IOException ex) {
//handle exception
}
}
}
Aber der finally
Block wird nie aufgerufen.
Kann mir jemand einen Tipp geben?
Sie hören nie auf zu rennen oder der Thread wird getötet. Die Netzwerkverwaltung, die für mehrere Aktivitäten erforderlich ist, klingt nach einem guten Ort, um sie in einen Dienst zu verschieben. – zapl
@zapl, Die TCP-Verbindung funktioniert einwandfrei. Ich kann Daten richtig empfangen und senden ... Mein einziges Problem ist das Schließen des Sockets, da der Server diesen Socket ebenfalls schließen muss. – amp