Ответ: 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