Задать вопрос
  • Объясните пожалуйста getApplicationContext(), getContext(), getBaseContext()?

    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. в вопросе процитирована какая-то белиберда. Не читай ты книги на русском по андроиду.
    Ответ написан
    Комментировать