В пуле потоков Android есть запускаемые объекты, которые создаются без выполнения после состояния фона - PullRequest
2 голосов
/ 25 января 2011

Мое приложение имеет пул потоков, который создает 3 потока одновременно. Когда я вызываю runnables, они добавляются в мой пул потоков.

Моя проблема возникает, когда приложение некоторое время уходит в фоновый режим. В конце концов, мои потоки перестают выполнять runnables в моем пуле, и пул просто продолжает расти. Даже если я верну свое приложение на передний план, мои потоки не начнут работать снова.

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

Есть ли у вас какие-либо предложения относительно того, что я могу найти, чтобы определить, был ли поток уничтожен?

1 Ответ

1 голос
/ 15 марта 2011

Вы не можете использовать пул потоков для выполнения кода в фоновом режиме, потому что жизненный цикл активности Android не будет считать ваше приложение активным, и в конечном итоге убьет ваш процесс (включая все потоки) после потери фокуса пользовательского интерфейса. Вам нужен Android Service с другим жизненным циклом. Для таких вещей мы используем локальный сервис с Handler и HandlerThread, в который мы можем публиковать Runnables. Вы, вероятно, захотите что-то подобное.

Примечание: каждый раз, когда я делаю это, я чувствую, что должен быть более простой способ, поэтому, возможно, стоит поискать, если кто-то упростил этот шаблон.

...