Как мне обработать завершение приложения, когда я хочу закрыть сокет?

Предположим, у меня есть три действия A, B и C. Все эти действия используют соединение сокета для получения данных. Соединение сокета является соединением Telnet, поэтому его нельзя закрыть и повторно подключить произвольно.

Если текущий задний стек A > B > C, Activity A может быть уничтожен Android, поэтому я не могу закрыть сокет в методе onDestroy(), иначе Activity C не сможет получать данные из сокета.

Я хочу закрыть сокет, когда приложение завершено. Я могу закрыть его вручную, когда нажимаю НАЗАД в корневой активности. Однако, если приложение закрывается, когда оно находится в фоновом режиме, как мне справиться с этой ситуацией, чтобы закрыть сокет и освободить связанный ресурс?

Спасибо!!


person Mong    schedule 15.07.2012    source источник


Ответы (1)


На самом деле я бы рекомендовал вам использовать только одну Activity/задачу для общения. Все остальные должны использовать CommunicationManager. Также помните, что onDestroy вызывается не всегда. Используйте onPause в начале/конце — для действий — чтобы убедиться, что вы завершаете все свои дела хорошо организованным и безопасным способом.

По сути, я бы создал асинхронную фоновую задачу, которая обрабатывает связь, чтобы ваш пользовательский интерфейс не блокировался.

person user387184    schedule 15.07.2012