Moja aplikacja ma pewne działania, które w pierwszym łączę gniazdo do komunikacji z serwerem w innych działaniach. To gniazdo działa w wątku roboczym.Zamknij gniazdo po zakończeniu aplikacji
Moje pytanie brzmi: gdzie mogę zamknąć to gniazdo po zakończeniu aplikacji? Za pomocą przycisku BACK na przykład ...
Myślałem zamknąć gniazdo w onDestroy()
ostatniego działania, ale działanie to może zostać zniszczone przez system w czasie wykonywania i zamknąć gniazdo, nawet jeśli aplikacja nie kończy. Nie chcę tego.
Moja run()
metoda obsługi połączenia z gniazdem wątku jest jak:
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
}
}
}
Ale blok finally
nigdy nie jest wywoływana.
Czy ktoś może dać mi wskazówkę?
nigdy nie przestajesz 'run' lub wątek zostanie zabity. Obsługa sieci wymagana przez wiele działań brzmi jak dobre miejsce, aby przenieść to do usługi. – zapl
@zapl, połączenie TCP działa poprawnie. Mogę poprawnie odbierać i wysyłać dane ... Jedynym moim problemem jest zamknięcie gniazda, ponieważ serwer również musi zamknąć to gniazdo. – amp