Хорошо ли передавать Context в качестве аргумента в функцию

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

Ответ

Передача Context в функцию допустима, но требует осторожности. Основные риски:

  1. Утечки памяти - если Context привязан к активити/фрагменту, а функция сохраняет ссылку дольше их жизни
  2. Неправильный контекст - например, передача активити в место, где нужен ApplicationContext

Лучшие практики:

  • Для долгоживущих операций используй ApplicationContext (получается через context.applicationContext)
  • Ограничивай область видимости контекста в функциях

Пример безопасного использования:

fun showToast(context: Context, message: String) {
    Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
    // Контекст не сохраняется
}