Ответ: Context
— это объект-среда, который предоставляет доступ к:
- ресурсам (
getString()
,getDrawable()
) - системным сервисам (
getSystemService()
) - файловой системе (
getFilesDir()
) - запуску компонентов (
startActivity()
,startService()
)
По сути — это «точка входа» к API Android, привязанная к жизненному циклу.
Основные виды Context
в Android
Вид | Описание | Где используется |
---|---|---|
ApplicationContext | Живёт всё время жизни процесса | Работа с синглтонами, фоновыми задачами |
Activity | Контекст, привязанный к Activity | UI-операции, 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