Android, выход / приостановка приложения, как уничтожить поток - PullRequest
2 голосов
/ 11 мая 2011

У меня есть приложение для Android с фоновым потоком, которое содержит сокетное соединение для отправки / получения данных с сервера.

Если мое приложение завершается (кнопка «Назад» и т. Д.) Или приостанавливается (кнопка «Домой», вызывая другое приложение), как лучше всего справиться с этой фоновой веткой?

Я видел 2 пути:

  • Вызов Thread.setDaemon(true) после создания и до запуска потока

  • Переопределить onStop(), onPause() или onDestroy()

Я просто хочу убедиться, что мое приложение не зависает или имеет другое странное поведение.

редактирование:

Кроме того, что является лучшим решением для закрытия сокета? Я закрываю это и inputStream также? Этого достаточно?

1 Ответ

1 голос
/ 11 мая 2011

Я бы предложил использовать некоторую переменную сигнала: сделать что-то вроде

public void run(){
while(!stopped){
  // do work
}

// clean up

return;
}

А затем в onStop() или onDestroy() установить остановлено на true. Вам также необходимо убедиться, что вы убираете позади себя, и если вам нужно перезапустить поток, вы делаете это в onResume или onCreate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...