Контекст Application предоставляет доступ к общепримутетельным ресурсам приложения, времени жизни всего приложения. Контекст Activity привязан к жизненному циклу конкретной Activity, содержит информацию о конкретном экране и дает доступ к ресурсам, специфичным для этой Activity (например, тема оформления).
Основные отличия:
- Время жизни: Контекст Application живет на протяжении всего времени работы приложения, контекст Activity — только пока работает соответствующая Activity.
- Область видимости: Контекст Application глобален для всего приложения, контекст Activity локален для конкретного экрана.
- Доступ к ресурсам: Контекст Application для общепринятых ресурсов, контекст Activity для специфичных к Activity (например, тема).
- Утечки памяти: Неправильное использование контекста Activity (например, при хранении в статическом поле) может привести к утечкам памяти, так как он ссылается на Activity и ее ресурсы. Контекст Application более безопасен для длительного хранения.
Примеры использования:
- Получение общепринятых строк или цветов:
kotlin
- Создание View в Activity:
kotlin
- Запуск новой Activity:
kotlin
- Доступ к SharedPreferences:
kotlin
Важно использовать соответствующий контекст для предотвращения утечек памяти и правильного поведения приложения. В большинстве случаев для специфичных к UI операций используется контекст Activity, для задач, не привязанных к конкретному экрану, — контекст Application.