Поскольку у Службы есть ссылка на Itnents, которые все еще имеют ссылку на Обработчик операций, то Обработчик не станет доступным для Сборщика мусора.
Вы видели это видео из Google IO ? Речь идет о создании приложений, использующих веб-сервисы RESTful, поэтому это не имеет прямого отношения, но подход к делегированию ответственности за реагирование на длительные события частично соответствует вашей проблеме.
Если вы не хотите что-то менять слишком сильно, вам нужно, чтобы в вашей деятельности onClose или onDestroy был уведомлен Сервис (и через него Намерение), что долгосрочное задание, за которое он отвечает нужно больше Он удаляет ссылку на обработчик, и GC может от него избавиться.
Это или централизованное управление (как в видео) выполнением задач и реагированием на их жизненный цикл в классе ServiceHelper. Этот класс может публиковать события, когда что-то происходит, и действия могут прослушивать эти события.
Преимущество этого кода в том, что он находится в одном месте, поэтому вам не нужно менять каждое действие, когда вы хотите изменить способ обработки сервиса.