@iVARIOUS

Static Handler в активности приводит к утечке памяти?

Есть главное активити, в нем главный фрагмент в котором еще несколько фрагментов меняются по очереди. При попытке вызвать метод в родительском фрагменте с помощью getParentFragment() из его дочерних фрагментов - вызывает ошибку. В документации пишет что если фрагмент привязан к активности, то метод возвращает null. И я решил создать static Handler чтобы запускать методы в главной активности, из её дочернего фрагмента, и не static Handler - чтоб запускать методы этого фрагмента из его более низних дочерних фрагментов. Все работает, но не приводит ли это к утечке памяти? Активность никогда не закрывается ( нет переходов между активностями), меняются только фрагменты в этой активности
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 3
@red-barbarian
если MainActivity
не должен если при onCreate handler заменяете.
можете еще в onDestroy сделать handler = null
Вообще, проверяйте. Хотя бы мониторьте память при поворотах экрана.
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
...главный фрагмент в котором еще несколько фрагментов меняются по очереди. При попытке вызвать метод в родительском фрагменте с помощью getParentFragment() из его дочерних фрагментов - вызывает ошибку.


Если они действительно "в котором", тоошибки быть не должно. Используете getChildFragmentManager() для добавления дочерних фрагментов?
Я не понял, зачем хэндлер для вызова методов активити. Он не нужен. Активити можно получить с помощью вызова getActivity() во фрагменте.
Чтобы сказать об утечке, нужно увидеть код. С большой вероятностью она есть. Точнее могут ответить телепаты, но они в отпуске.
Ответ написан
Комментировать
@iVARIOUS Автор вопроса
С getActivity() - понятно. Он работает и методы из дочернего фрагмента вызываются. Но этот дочерний фрагмент имеет свои дочерние фрагменты которые уже вызывают ошибку при getParentFragment(), так как он работает в активности. И чтоб не путаться в способах вызовов родительских функций, решил сделать один подход на все ( тоесть - статичные хэндлеры, которые видны из далека, и которым можно отправлять месенджеры). Прочитал в какой то статье, что статичные хэндлеры имеют неявные ссылки на активити и фрагменты, но эти ссылки называются "слабыми", поэтому сборщиком мусора удаляются и не приводят к утечкам. В диспетчере приложений телефона, при весе программы в 5мб, иногда там высвечивается вес в 20-40 мб, и не понимаю че это значит. Приложение по обработке изображений.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы