Ответ
Получать 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