Учитывая ссылку на #onAttach()
, похоже, что вы имеете дело с фрагментами. По документации Android :
фрагмент может обращаться к экземпляру FragmentActivity с помощью getActivity () и легко выполнять такие задачи, как поиск представления в макете активности
API предназначены для предоставления вам любого необходимого Context
, поэтому более логично просто использовать getActivity()
там, где и когда это необходимо.
В общем, если вы берете ссылку на любой элемент пользовательского интерфейса или любой тип Context
, вы должны убедиться, что:
- Время жизни того места, где вы держите ссылку, полностью содержится в образе жизни вещи, на которую вы ссылаетесь
- ИЛИ ...
WeakReference
используется и проверяется на null
перед использованием, чтобы разрешить объекту, на который ссылаются, получить сборщик мусора
Жизненный цикл элементов пользовательского интерфейса строго содержится во вложении Context
, поэтому для них вполне нормально напрямую ссылаться на контекст без использования WeakReference
.
Кроме того, существуют явные примеры использования родительского контекста, переживающего фрагмент специально для диалогов .