Мое приложение использует HandlerThread
для нескольких операций, совместно используемых компонентами, которые должны выполняться в фоновом потоке. Большую часть времени этот поток будет в состоянии ожидания.
Могу ли я оставить этот HandlerThread
работающим (ожидающим) в моем приложении, посылая ему сообщения при необходимости, но никогда не выходя из него через HandlerThread.getLooper().quit()
? Это может означать, что HandlerThread
будет продолжать существовать в состоянии ожидания даже после того, как все компоненты моего приложения будут уничтожены.
Изначально это казалось мне большим отказом - что-то, чего я определенно не хотел бы делать - но сейчас я не уверен. Когда Android убивает мой процесс, как это происходит, когда ему нужно освободить процессорное время или память, он завершает этот поток вместе с моим потоком пользовательского интерфейса. Кроме того, поток будет ожидать, поэтому он не будет занимать процессорное время. Кроме того, мое приложение использует множество AsyncTasks
, которые, как я знаю, используют пул потоков. Насколько я понимаю, AsyncTask
использует ThreadPoolExecutor
, который не привязан ни к каким обратным вызовам жизненного цикла приложения (потоки в пуле, когда они не используются, просто ждут).
Итак, мой вопрос: могу ли я использовать HandlerThread
для нескольких компонентов приложения, никогда (или редко) выходить из него и оставлять его в ожидании, когда он не используется, без каких-либо ужасных побочных эффектов?