Можно ли предположить, что getApplicationContext в приложении и getContext в AbstractThreadedSyncAdapter возвращает один и тот же объект? Как насчет другого случая, когда мы получаем контекст от активности, сервиса .... все принадлежат одному и тому же приложению. Благодарю.- это контексты для Android-приложения/приложения/службы того же объекта, если они принадлежат к одному и тому же приложению?
ответ
Нет, они не являются. Вот трюк:
Приложение - экземпляр singleton работает в вашей заявке процесс. Доступ к нему можно получить с помощью методов getApplication() из объекта или службы и getApplicationContext() из любого другого объекта , который наследуется из контекста. Независимо от того, где и как это делается , вы всегда получите тот же экземпляр из вашего .
Деятельность/Сервис - наследоваться от ContextWrapper который реализует же API, но прокси все его вызовы метода к скрытой внутренней инстанции Контекст, также известный как базовый контекст. Всякий раз, когда фреймворк создает новый экземпляр Activity или Service, он также создает новый экземпляр ContextImpl, чтобы выполнить весь тяжелый подъем, который завершает компонент . Каждое действие или услуга и их базовый контекст являются уникальными для каждого экземпляра.
Эта статья действительно помогает очистить его: https://possiblemobile.com/2013/06/context/
Спасибо, это очень познавательно. Вы знаете о контексте в AbstractThreadedSyncAdapter? Не существует doc для реализации по умолчанию на всех http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html#getContext%28%29 – hixhix
Вы должны передать ему контекст, так что это зависит от того, контекст, который вы проходите в – Sree
Wow @Sree, очень nnice статья. Думаю, мне нужно пойти и исправить некоторые подводные камни в моем приложении :) – Snake