Кажется, что Looper
(по крайней мере, тот, который создан с помощью HandlerThread
) никогда не получает сбор мусора, даже если на него не ссылаются другие коды. Мне известны методы quit()
и quitSafely()
, однако в моем приложении я не уверен, кто будет отвечать за вызов одного из этих методов.Выключение Android Looper
Что такое правильный способ закрыть Looper
в приложении с несколькими деятельности и где Handler
s, созданные на этом Looper
имеют жизненный цикл отличается от тех, о деятельности. Это не может быть onDestroy()
любого из видов деятельности. Если я не выключу его, и процесс не будет уничтожен ОС - в следующем приложении «запуск» может быть создан новый Looper
, и этот будет протекать. В качестве альтернативы, создайте один раз, сохраните в статическом поле, никогда не уходите, дайте ему протекать один раз. Последний, кажется, самый безопасный и самый простой в реализации до сих пор.
Вы предлагаете использовать 'Сервис' для управления временем жизни Looper? Если так, как я уже говорил, я даже не знаю, когда его закрыть. В этом случае 'Сервис' должен быть примерно эквивалентен моему статическому полю. В качестве альтернативы, если вы предлагаете использовать 'Service' для работы над не основным потоком, меня особенно интересует' Handler 'отправка' Message 'друг другу. – justme
С услугой вам не придется иметь дело с жизнью 'Looper'. Вы можете просто привязать его к ресурсу «Сервис» и позволить Системе управлять им. Если вы действительно хотите использовать «Обработчик», вы можете использовать [ResultReceiver] (http://stackoverflow.com/questions/4510974/using-resultreceiver-in-android) для обработки «Message's from Service». –