Хорошо ли получать Context и передать его в другой код

«Хорошо ли получать Context и передать его в другой код» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Получать Context и передавать его в другой код может быть опасно, если не учитывать его жизненный цикл.

Проблемы:

  • Утечки памяти, если Context привязан к Activity (например, через AsyncTask или Handler).
  • Если Context уже уничтожен, но используется, это приведёт к NullPointerException или IllegalStateException.

Решение:

  • Используйте ApplicationContext для долгоживущих операций (например, работа с SharedPreferences).
  • Для View и Fragment используйте их собственный Context.

Пример:

// Хорошо: ApplicationContext для долгоживущих задач
val appContext = context.applicationContext  

// Плохо: передача Activity Context в Singleton
SomeSingleton.init(context) // Может удерживать Activity