Android сколько потоков я могу иметь? - PullRequest
13 голосов
/ 28 сентября 2011

У меня есть приложение для Android, в котором происходят разные вещи, но все они в основном являются потоками (и, безусловно, являются потоками для отладчика Android)

Есть несколько слушателей анимации, которые зацикливаются и вызывают друг друга

Существует таймер обратного отсчета, который всегда начинает отсчет до нуля после его инициализации

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

Понимание ценится

Ответы [ 3 ]

8 голосов
/ 29 сентября 2011

Я был бы очень удивлен, узнав, что вы исчерпали количество потоков, которые вы можете безопасно использовать в приложениях для Android, при условии, что вы правильно управляете их временем жизни и не допускаете возникновения «занятых петель» и т. П.

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

0 голосов
/ 29 сентября 2011

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

Все ваши слушатели должны проходить в одном потокетакже (есть один поток, который управляет всеми слушателями (в любом случае для видимых объектов).

Так что вы, вероятно, не используете столько потоков, сколько вы думаете. Если вы создавали многоя бы беспокоился о потоках - их действительно сложно синхронизировать, и они могут стоить вам гораздо больше, чем вы, но с перечисленными структурами я бы пошел дальше и выделил столько, сколько вы считаете нужным (но протестируйте дляпроизводительность на дешевом устройстве конечно)

0 голосов
/ 29 сентября 2011

Нет максимума, о котором я знаю.Однако я могу вам сказать, что вам, скорее всего, не нужно столько потоков.

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

...