2016-07-01 3 views
0

Кажется, что Looper (по крайней мере, тот, который создан с помощью HandlerThread) никогда не получает сбор мусора, даже если на него не ссылаются другие коды. Мне известны методы quit() и quitSafely(), однако в моем приложении я не уверен, кто будет отвечать за вызов одного из этих методов.Выключение Android Looper

Что такое правильный способ закрыть Looper в приложении с несколькими деятельности и где Handler s, созданные на этом Looper имеют жизненный цикл отличается от тех, о деятельности. Это не может быть onDestroy() любого из видов деятельности. Если я не выключу его, и процесс не будет уничтожен ОС - в следующем приложении «запуск» может быть создан новый Looper, и этот будет протекать. В качестве альтернативы, создайте один раз, сохраните в статическом поле, никогда не уходите, дайте ему протекать один раз. Последний, кажется, самый безопасный и самый простой в реализации до сих пор.

ответ

0

Что такое правильный способ закрыть Looper в приложении с несколькими деятельности и где Обработчики созданные на этом Looper имеют жизненный цикл отличается от тех, о деятельности

Используйте Service.

У этого есть собственный Looper, собственный жизненный цикл, может работать в основном потоке, как активность.

Вы можете использовать LocalBroadcastManager для получения обратного вызова от него.

+0

Вы предлагаете использовать 'Сервис' для управления временем жизни Looper? Если так, как я уже говорил, я даже не знаю, когда его закрыть. В этом случае 'Сервис' должен быть примерно эквивалентен моему статическому полю. В качестве альтернативы, если вы предлагаете использовать 'Service' для работы над не основным потоком, меня особенно интересует' Handler 'отправка' Message 'друг другу. – justme

+0

С услугой вам не придется иметь дело с жизнью 'Looper'. Вы можете просто привязать его к ресурсу «Сервис» и позволить Системе управлять им. Если вы действительно хотите использовать «Обработчик», вы можете использовать [ResultReceiver] (http://stackoverflow.com/questions/4510974/using-resultreceiver-in-android) для обработки «Message's from Service». –

Смежные вопросы