Как управлять жизненным циклом активности с использованием сокетов в Android? - PullRequest
3 голосов
/ 30 мая 2010
  • У меня есть активность Android, которая, в свою очередь, запускает поток.
  • В теме я открываю постоянное сокетное соединение TCP.
  • Когда сокет подключается к серверу, загружаются динамические данные.
  • Поток отправляет сообщения, используя класс-обработчик, в действие, когда данные получены.

Теперь, если пользователь переключается из портретного в ландшафтный режим, действие получает вызов onDestroy. В этот момент я закрываю сокет и останавливаю нить.

Когда Android переключил альбомный режим, он снова вызывает onCreate, и мне нужно заново подключить сокет. Кроме того, все данные, полученные в результате действия, необходимо загрузить еще раз, поскольку сервер не имеет возможности узнать, что было отправлено ранее, т.е. отсутствует функция «возобновления».

Таким образом, проблема заключается в том, что существует много данных, которые повторно отправляются все время, когда изменяется ландшафтный режим.

Какие у меня варианты здесь?

  • Должен ли я создать службу, которая обрабатывает трафик сокетов к серверу, таким образом, я всегда получаю все данные, которые сервер отправил в службу.
  • Или я должен отключить ландшафтный режим все вместе, возможно?
  • Или лучше всего переписать мой сервер, который ОЧЕНЬ БОЛЬШОЙ: -)

Все входные данные приветствуются: -)

/ Хенрик

1 Ответ

6 голосов
/ 30 мая 2010

Либо не допускайте перезапуска вашей активности ( Перезапуск активности при ротации Android ), либо внедряйте службу, которой управляет ваше приложение. Метод Service очень популярен среди приложений, которые я видел, и дает вам некоторую гибкость при разрыве соединения.

...