@foonfyrick

Объясните пожалуйста getApplicationContext(), getContext(), getBaseContext()?

Я прочитал что: getApplicationContext() -возвращает контекст для всех действий, выполняемых в приложении. getBaseContext() - если вы хотите получить доступ к контексту из другого контекста в приложении, вы можете получить доступ. getContext() -возвращает контекстное представление только текущего выполняемого действия.
Что я понял из прочтенного? -Ничего...

Как я понял, getApplicationContext() предоставляет доступ к ресурсам, вызову активности и т.д. во всем приложении, а что значит получить доступ к контексту из другого контекста я не понял, а getContext() возвращает контекст текущего действия, а какое у меня текущее действие как узнать.
Я запутался, можете понятным языком для новичка объяснить? На данный момент, если мне нужен где-то контекст, я обращаюсь к тому, который первый высвечивается в списке(ну или наугад), а я хочу понимать какой нужно в той или иной ситуации.
  • Вопрос задан
  • 1353 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
getApplicationContext это метод Context'a, возвращающий класс приложения. Если ты расширишь Application, и укажешь этот класс в манифесте, то getApplicationContext вернёт объект этого класса.

getBaseContext() это метод ContextWrapper'a, который возвращает оборачиваемый Context. ContextWrapper оборачивает произвольный контекст, и проксирует его методы, чтобы как-то изменить поведение.

getContext() это не метод какого-либо контекста. Это может быть метод View, тогда он вернёт контекст, с которым создана вьюха. Например, Activity или ContextThemeWrapper.
Или это может быть метод фрагмента, тогда он вернёт активити, к которой приаттачен фрагмент в данный момент.

Вывод:
getApplicationContext() когда нужно получить доступ к классу Application, например для реализации графа DI.
getBaseContext() когда нужно получить доступ к базовому контексту(очень-очень редко. Когда до этого дойдёт, ты, скорее всего, поймёшь, что тебе нужно).
getContext() когда нужен контекст, но есть только фрагмент/вьюха.

P.S. в вопросе процитирована какая-то белиберда. Не читай ты книги на русском по андроиду.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы