Недавно я программировал на Android, но я до сих пор не совсем понял концепцию Context
. не понимаю этого, а какая разница this
?
Например, в таких кодах, почему?
TextView mTextView = new TextView(getApplicationContext());
Недавно я программировал на Android, но я до сих пор не совсем понял концепцию Context
. не понимаю этого, а какая разница this
?
Например, в таких кодах, почему?
TextView mTextView = new TextView(getApplicationContext());
Context
это абстрактный класс , и это реализовано другими оттуда, потому чтоcontex
оно не всегда одно и то же или не всегда допустимо, я имею в виду, что его не всегда можно передать с помощью getContex() или аналогичного, потому что это ожидается от другой другой реализации, это будет зависеть от компонента приложения, например (активность, служба, приложение и т. Д.)Application
,Activity/Service
,BroadcastReceiver
,ContentProvider
, и т. д., из которых оно передается, можно сказать, что это вход для доступа почти ко всей системе AndroidВы можете получить контекст, вызвав, например
getApplicationContext ()
, как уже упоминалось,getContext ()
илиgetBaseContext ()
здесь один из ваших вопросов, который вы можете использовать только тогда , когда он находится в классе активности Activity или что он каким-то образом связан с ним, это может быть по наследству и т. д.Когда используется:
Он используется для загрузки ресурсов, получения
SS
(системной службы), создания новой активности, получения внутренних путей к файлам и для создания новых представленийview
, требующих контекста, с использованием таких служб, как LAYOUT_INFLATER_SERVICE, и в других частях, которые управляют каким-либо контекстом.context
.ContentProvider : на самом деле это не контекст, но он дается при его создании, к которому можно получить доступ через getContext() . Если ContentProvider запущен в том же процессе приложения, то это вернет то же самое
singleton
, что и приложение, это будет упомянуто в пунктеApplication
. Если они находятся в отдельных процессах, этоcontext
будет вновь созданный пакет, представляющий поставщика, в котором он работает или работает.Activity/Service: это наследуется от
ContextWrapper
реализации того же API, известного как его контекстная база. Когда платформа создает новый экземпляр действия или службы, также создается новый контекст, контекст будет создан для каждого нового экземпляра действия или службы, и, в свою очередь, его базовый контекст для этого будет уникальным для каждого экземпляра.Приложение: это единственный экземпляр
patron singleton instance
, который выполняется в процессе вашего приложения, к нему можно получить доступ с помощью таких методов, как getApplication() из действия или службыActivity
илиService
, и использоватьgetApplicationContext ()
в любом другом объекте, который наследуется от,contex
имейте в виду, что вы всегда будете получить тот же экземпляр из вашего процесса.BroadcastReceiver: на самом деле это не контекст
framework
, он отправляет, передает или назначаетcontext
enonReceive()
(PRestrictedContex).broadcast event
каждый раз, когда поступает новый , обрабатываетсяbroadcast
и доставляется, отправляется новый экземпляр контекста.http://developer.android.com/intl/es/reference/android/content/Context.html
На основе ответа SO Что такое контекст в Android
Context
представляет текущее состояние приложения и предоставляет информацию о среде его выполнения. Это абстрактный класс, и его реализация зависит от системы Android.Помимо прочего, он позволяет получить доступ к ресурсам и классам, специфичным для приложения, а также выполняет такие операции, как запуск действий, создание намерений и т. д.
Некоторые из наиболее распространенных применений:
Создайте новые объекты:
TextView mTextView = new TextView(getApplicationContext()); ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Доступ к общим ресурсам , таким как LAYOUT_INFLATER_SERVICE или SharedPreferences.
context.getSystemService(LAYOUT_INFLATER_SERVICE)
Неявный доступ к компонентам:
getApplicationContext().getContentResolver().query(uri, ...);
Существует несколько способов доступа к
Context
getApplicationContext()
getContext()
getBaseContext()
this
если ты внутри одногоActivity