Context в Android-е. Какие бывают, чем отличаются?

Ответ: Context — это объект-среда, который предоставляет доступ к:

  • ресурсам (getString(), getDrawable())
  • системным сервисам (getSystemService())
  • файловой системе (getFilesDir())
  • запуску компонентов (startActivity(), startService())

По сути — это «точка входа» к API Android, привязанная к жизненному циклу.

Основные виды Context в Android

ВидОписаниеГде используется
ApplicationContextЖивёт всё время жизни процессаРабота с синглтонами, фоновыми задачами
ActivityКонтекст, привязанный к ActivityUI-операции, startActivity(), Inflate
ServiceКонтекст сервисаСлужбы и системные вызовы
BroadcastReceiverВременный Context, живёт во время onReceive()Ограничен, нельзя запускать Dialog
ContextWrapperОбёртка над другим ContextБазовый класс для ContextThemeWrapper, AppCompatActivity
ContextThemeWrapperДобавляет/меняет темуВ Dialog, Activity, AlertDialog.Builder

ApplicationContext:

  • Живёт столько, сколько живёт процесс
  • Безопасен для кэширования, синглтонов, долгоживущих объектов
  • Нельзя использовать для UI-операций, которые зависят от темы или Window

Activity context:

  • Привязан к Activity, имеет доступ к теме, Window, LayoutInflater
  • Может утечь(!), если передаёшь его в синглтоны или ViewModel


Опубликовано

в

от

Метки: