Что такое Context
класс в программировании Android и для чего он используется?
Я читал об этом на сайте разработчика , но не могу понять это ясно.
Что такое Context
класс в программировании Android и для чего он используется?
Я читал об этом на сайте разработчика , но не могу понять это ясно.
Ответы:
Проще говоря:
Как следует из названия, это контекст текущего состояния приложения / объекта. Это позволяет вновь созданным объектам понять, что происходит. Как правило, вы звоните, чтобы получить информацию о другой части вашей программы (деятельность и пакет / приложение).
Вы можете получить контекст вызова getApplicationContext()
, getContext()
, getBaseContext()
или this
(если в классе , который простирается от Context
, например, приложения, активность, классы обслуживания и IntentService).
Типичное использование контекста:
Создание новых объектов : создание новых представлений, адаптеров, слушателей:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Доступ к стандартным общим ресурсам : такие службы, как LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
Неявный доступ к компонентам : относительно поставщиков контента, трансляций, намерений
getApplicationContext().getContentResolver().query(uri, ...);
context.getSystemService(LAYOUT_INFLATER_SERVICE)
, где и как context
определяется?
Представьте себе, что Person-X является генеральным директором начинающей софтверной компании.
В компании присутствует ведущий архитектор, этот ведущий архитектор выполняет всю работу в компании, такую как базы данных, пользовательский интерфейс и т. Д.
Теперь генеральный директор нанимает нового разработчика.
Именно Архитектор сообщает об ответственности вновь нанятого человека, основываясь на навыках нового человека, независимо от того, будет ли он работать над базой данных, пользовательским интерфейсом и т. Д.
Это похоже на доступ активности Android к ресурсу приложения.
Это похоже на то, когда вы посещаете отель, вы хотите завтракать, обедать и ужинать в подходящее время, верно?
Есть много других вещей, которые вам нравятся во время пребывания. Как вы получаете эти вещи?
Вы просите служащего обслуживания номеров принести эти вещи для вас.
Здесь обслуживающий персонал - это контекст, считающий, что вы - единственное занятие, а отель - ваше приложение, и, наконец, завтрак, обед и ужин должны быть ресурсами.
Вещи, которые включают контекст:
Еще один способ описать это: Рассматривать контекст как удаленный от телевидения, а каналы в телевизоре - это ресурсы, услуги, использование намерений и т. Д. - - - Здесь удаленный доступ действует как доступ для получения доступа ко всем различным ресурсам на переднем плане.
Таким образом, Remote имеет доступ к таким каналам, как ресурсы, услуги, использование намерений и т. Д.
Аналогично ... Тот, кто имеет доступ к удаленному, естественно, имеет доступ ко всем вещам, таким как ресурсы, услуги, использование намерений и т. Д.
Различные методы, с помощью которых вы можете получить контекст
getApplicationContext()
getContext()
getBaseContext()
this
(когда в классе деятельности)Пример:
TextView tv = new TextView(this);
Ключевое слово this
относится к контексту текущей деятельности.
getApplicationContext()
, getContext()
, getBaseContext()
..... смотрите это -> ( stackoverflow.com/a/10641257 )
SomeActivityName.this
. В теме, например, this
относится к теме, а не к активности
Тема контекста в Android, кажется, многих сбивает с толку. Люди просто знают, что контекст необходим довольно часто для выполнения основных задач в Android. Люди иногда впадают в панику, потому что они пытаются выполнить какую-то операцию, которая требует контекста, и они не знают, как «получить» правильный контекст. Я собираюсь попытаться демистифицировать идею контекста в Android. Полное рассмотрение проблемы выходит за рамки этого поста, но я постараюсь дать общий обзор, чтобы у вас было представление о том, что такое контекст и как его использовать. Чтобы понять, что такое контекст, давайте взглянем на исходный код:
Что именно является контекстом?
Ну, сама документация дает довольно простое объяснение: класс Context - это «Интерфейс для глобальной информации о среде приложения».
Сам класс Context объявлен как абстрактный класс, реализация которого обеспечивается ОС Android. В документации также указывается, что Контекст «… разрешает доступ к ресурсам и классам, относящимся к конкретному приложению, а также к дополнительным вызовам для операций на уровне приложения, таких как операции запуска, широковещательная рассылка и получение и т.д.».
Теперь вы можете очень хорошо понять, почему имя называется «Контекст». Это потому, что это просто так. Контекст предоставляет ссылку или ловушку, если хотите, для Действия, Сервиса или любого другого компонента, тем самым связывая его с системой, обеспечивая доступ к глобальной среде приложения. Другими словами: Контекст дает ответ на вопрос компонентов: «Где я, черт возьми, по отношению к приложению в целом и как я могу получить доступ к общему приложению / общаться с ним?» Если все это немного сбивает с толку, быстрый взгляд на методы, предоставляемые классом Context, дает некоторые дополнительные сведения о его истинной природе.
Вот случайная выборка этих методов:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
Что общего у всех этих методов? Все они позволяют любому, кто имеет доступ к контексту, иметь доступ к ресурсам всего приложения.
Другими словами, контекст подключает компонент, имеющий ссылку на него, к остальной части среды приложения. Например, ресурсы (например, папка «/ assets» в вашем проекте) доступны по всему приложению при условии, что Activity, Сервис или кто-либо еще знает, как получить доступ к этим ресурсам. То же самое касается того, getResources()
что позволяет нам делать такие вещи, getResources().getColor()
которые зацепят вас вcolors.xml
привязывать ресурсу (не говоря уже о том, что aapt обеспечивает доступ к ресурсам через код Java, это отдельная проблема).
В результате, это то Context
, что обеспечивает доступ к системным ресурсам и их компонентам, которые подключают к «большему приложению». Давайте посмотрим на подклассы Context
классов, обеспечивающих реализацию абстрактного Context
класса. Наиболее очевидный класс - это Activity
класс. Activity
Наследует from ContextThemeWrapper
, который наследует от ContextWrapper
, который наследует от Context
самого себя. Эти классы полезны для понимания вещей на более глубоком уровне, но на данный момент достаточно знать это ContextThemeWrapper
и ContextWrapper
в значительной степени они звучат так. Они реализуют абстрактные элементы сам Context
класс путем «обертывания» контекста (фактического контекста) и делегирования этих функций этому контексту.ContextWrapper
класс, абстрактный метод getAssets
из Context
класса реализован следующим образом:
@Override
public AssetManager getAssets() {
return mBase.getAssets();
}
mBase
это просто набор полей конструктором для определенного контекста. Таким образом, контекст ContextWrapper
переносится, и делегирует свою реализацию метода getAssets этому контексту. Давайте вернемся к рассмотрению Activity
класса, который в конечном итоге наследуется, Context
чтобы увидеть, как все это работает.
Вы, наверное, знаете, что такое «Активность», но пересмотреть - это «единственная вещь, которую может сделать пользователь. Он заботится о предоставлении окна для размещения пользовательского интерфейса, с которым взаимодействует пользователь ». Разработчики, знакомые с другими API-интерфейсами, и даже не разработчики могут воспринимать это как «экран». Это технически неточно, но это не имеет значения для наших целей. Итак , как Activity
и Context
взаимодействуют и что именно происходит в их отношениях наследования?
Опять же, полезно взглянуть на конкретные примеры. Мы все знаем, как начать деятельность. Если у вас есть «контекст», из которого вы запускаете действие, вы просто вызываете startActivity(intent)
, где Intent описывает контекст, из которого вы запускаете действие, и действие, которое вы хотели бы начать. Это знакомый startActivity(this, SomeOtherActivity.class)
.
А что есть this
? this
ваша активность, потому что Activity
класс наследует от Context
. Полный цикл выглядит так: когда вы вызываете startActivity
, в конечном итоге Activity
класс выполняет что-то вроде этого:
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
intent, requestCode);
Таким образом, он использует execStartActivity
из Instrumentation
класса (на самом деле из внутреннего класса в Instrumentation
вызываемом ActivityResult
).
На данный момент, мы начинаем смотреть на внутренние системы.
Это где ОС на самом деле обрабатывает все. Так как же Инструментарий запускает Активность точно? Ну, параметр this
в execStartActivity
методе выше - это ваша активность, то есть контекст, и execStartActivity
использует этот контекст.
Обзор 30 000 заключается в следующем: класс Instrumentation отслеживает список операций, которые он отслеживает для выполнения своей работы. Этот список используется для координации всех действий и обеспечения бесперебойной работы потока операций.
Есть некоторые операции, которые я не полностью изучил, для решения каких проблем потока и процесса. В конечном счете, ActivityResult
используется нативная операция, ActivityManagerNative.getDefault().startActivity()
которая использует то, Context
что вы передали при вызове startActivity
. Контекст, который вы передали, используется для «разрешения намерений», если это необходимо. Умышленное разрешение - это процесс, с помощью которого система может определить цель намерения, если оно не предоставлено. (Проверьте руководство здесь для более подробной информации).
И для того, чтобы Android мог это сделать, ему необходим доступ к информации, предоставленной Context
. В частности, система должна иметь доступ к ней, ContentResolver
чтобы она могла «определить MIME-тип данных намерения». Весь этот вопрос о том, как startActivity
использование контекста было немного сложным, и я сам не до конца понимаю внутренние механизмы. Моя главная мысль Это было просто для иллюстрации того, как нужно обращаться к ресурсам всего приложения, чтобы выполнить многие из операций, которые важны для приложения Context
. Вот что обеспечивает доступ к этим ресурсам. Более простым примером могут быть представления. Мы все знаем, что вы создаете. Пользовательский вид путем расширения RelativeLayout
или какого-либо другого View
класса, вы должны предоставить конструктор, который принимаетContext
в качестве аргумента. Когда вы создаете экземпляр своего пользовательского представления, вы переходите в контекст. Почему? Поскольку представление должно иметь доступ к темам, ресурсам и другим деталям конфигурации представления. Просмотр конфигурации на самом деле отличный пример. Каждый контекст имеет различные параметры (поля в Context
российских реализациях), которые устанавливаются самой ОС для таких вещей, как размерность или плотность отображения. Легко понять, почему эта информация важна для настройки представлений и т. Д.
Последнее слово: по какой-то причине люди, плохо знакомые с Android (и даже не новички), похоже, полностью забывают об объектно-ориентированном программировании, когда речь заходит об Android. По какой-то причине люди пытаются склонить свои разработки под Android к заранее продуманным парадигмам или изученному поведению.
У Android есть своя собственная парадигма и определенная схема, которая на самом деле вполне последовательна, если отпустить ваши предвзятые представления и просто прочитать документацию и руководство для разработчиков. Моя реальная точка зрения, однако, хотя «получение правильного контекста» может иногда быть хитрым, люди неоправданно паникуют, потому что сталкиваются с ситуацией, когда им нужен контекст, и думают, что его нет. Еще раз, Java является объектно-ориентированным языком с дизайном наследования.
Вы только «имеете» контекст внутри своей Деятельности, потому что ваша деятельность сама наследуется от Контекста. В этом нет ничего волшебного (за исключением всего того, что сама ОС делает для установки различных параметров и для правильной «настройки» вашего контекста). Таким образом, оставляя в стороне проблемы с памятью / производительностью (например, удерживая ссылки на контекст, когда вам это не нужно, или делая это таким образом, что это имеет негативные последствия для памяти и т. Д.), Context - это объект, подобный любому другому, и его можно передавать как и любой POJO (обычный старый объект Java). Иногда вам может потребоваться сделать что-то умное для извлечения этого контекста, но любой обычный класс Java, который расширяется из ничего, кроме самого объекта, может быть написан так, чтобы иметь доступ к контексту; просто предоставьте открытый метод, который принимает контекст, а затем использует его в этом классе по мере необходимости.
Контекст - это дескриптор системы; он предоставляет такие услуги, как разрешение ресурсов, получение доступа к базам данных и настройкам и т. д. В приложении для Android есть действия. Контекст подобен дескриптору среды, в которой ваше приложение в данный момент выполняется. Объект действия наследует объект контекста.
Для получения дополнительной информации см. Введение в разработку Android с Android Studio - Учебное пособие .
Context
является «интерфейсом» к глобальной информации о среде приложения. На практике Context
это на самом деле абстрактный класс , реализация которого обеспечивается системой Android.
Он позволяет получить доступ к ресурсам и классам, относящимся к конкретному приложению, а также к дополнительным вызовам для операций на уровне приложения, таких как запуск, широковещание и получение и т.д.
На следующем рисунке вы можете увидеть иерархию классов, где Context
находится корневой класс этой иерархии. В частности, стоит подчеркнуть, что Activity
является потомком Context
.
Что Context
именно?
Согласно справочной документации по Android, это объект, представляющий различные данные среды. Он обеспечивает доступ к локальным файлам, базам данных, загрузчикам классов, связанным со средой, службам (включая службы системного уровня) и многим другим. В этой книге и в повседневной работе с Android вы будете часто видеть контекст.
Из книги « Android на практике », стр. 60.
Некоторым API Android требуется Context
параметр as
Если вы посмотрите на различные API Android, вы заметите, что многие из них принимают android.content.Context
объект в качестве параметра. Вы также увидите, что Деятельность или Служба обычно используются как
Context
. Это работает, потому что оба эти класса расширяются от Context
.
Простой пример для понимания context
в Android:
У каждого босса есть помощник, за которым нужно ухаживать, выполнять все менее важные и трудоемкие задачи. Если файл или чашка кофе необходимы, помощник в бегах. Некоторые начальники почти не знают, что происходит в офисе, поэтому они спрашивают своих помощников об этом тоже. Они выполняют некоторую работу сами, но в большинстве других случаев им нужна помощь их помощников.
В этом сценарии
Босс - это приложение для Android
Помощник - это контекст
Файлы / Чашка кофе - это ресурсы
Обычно мы называем контекст, когда нам нужно получить информацию о различных частях нашего приложения, таких как «Действия», «Приложения» и т. Д.
Некоторые операции (вещи, где нужен помощник), где задействован контекст:
Различные способы получения контекста:
getContext()
getBaseContext()
getApplicationContext()
this
Контекст Android - это Интерфейс (в общем смысле, а не в смысле Java; в Java Context
это на самом деле абстрактный класс!), Который обеспечивает доступ к конкретным ресурсам приложения, а также к классу и информации о среде приложения.
Если бы ваше приложение для Android было веб-приложением, ваш контекст был бы чем-то похожим ServletContext
(я не буду здесь точно сравнивать).
Ваши действия и службы также расширяются Context
, поэтому они наследуют все эти методы для доступа к информации о среде, в которой работает приложение.
Context
представляет дескриптор для получения данных среды.Context
Сам класс объявляется как абстрактный, реализация которого обеспечивается ОС Android.Context
это как удаленные от телевидения и каналы в телевизоре ресурсы, услуги и т. д.
Что ты можешь сделать с этим ?
Способы получения контекста:
Просто выкладываю это для новичков;
Итак, сначала поймите Слово Контекст:
На английском языке-lib. это значит:
«Обстоятельства, которые формируют обстановку для события, утверждения или идеи, и с точки зрения которых они могут быть полностью поняты и оценены».
«Части чего-либо написанного или сказанного, которые предшествуют и следуют за словом или отрывком и разъясняют его значение».
Теперь отнеситесь к миру программирования с тем же пониманием:
контекст текущего состояния приложения / объекта. Это позволяет вновь созданным объектам понять, что происходит. Как правило, вы звоните, чтобы получить информацию о другой части вашей программы (деятельность, пакет / приложение)
Вы можете получить контекст, вызвав getApplicationContext()
, getContext(), getBaseContext()
или this
(когда в классе деятельности).
Для получения контекста Anywhere в приложении используйте следующий код:
Создайте новый класс AppContext
в вашем приложении для Android
public class AppContext extends Application {
private static Context context;
public void onCreate(){
super.onCreate();
AppContext.context = getApplicationContext();
}
public static Context getAppContext() {
return AppContext.context;
}
}
Теперь, когда вам нужен контекст приложения в неактивном классе, вызовите этот метод, и вы получите контекст приложения.
Надеюсь это поможет;)
Класс android.content.Context
обеспечивает подключение к системе Android и ресурсам проекта. Это интерфейс к глобальной информации о среде приложения.
Контекст также обеспечивает доступ к Сервисам Android, например, к Службе определения местоположения.
Деятельность и услуги расширяют Context
класс.
Context is Экземпляры класса android.content.Context обеспечивают соединение с системой Android, которая выполняет приложение. Например, вы можете проверить размер отображения текущего устройства через контекст.
Это также дает доступ к ресурсам проекта. Это интерфейс к глобальной информации о среде приложения.
Класс Context также обеспечивает доступ к службам Android, например, диспетчеру аварийных сигналов для запуска событий, основанных на времени.
Действия и сервисы расширяют класс Context. Поэтому они могут быть непосредственно использованы для доступа к контексту.
Контекст - это интерфейс к глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается Android
системой.
Context
обеспечивает доступ к ресурсам и классам приложений, а также к вызовам таких операций на уровне приложений, как launching activities, broadcasting and receiving intents, etc.
Вот пример
public class MyActivity extends Activity {
public void Testing() {
Context actContext = this; /*returns the Activity Context since Activity extends Context.*/
Context appContext = getApplicationContext(); /*returns the context of the single, global Application object of the current process. */
Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
Context BtnContext = BtnShowAct1.getContext(); /*returns the context of the View. */
Для получения более подробной информации вы можете посетить http://developer.android.com/reference/android/content/Context.html
Контекст в основном для доступа к ресурсам и получения сведений о среде приложения (для контекста приложения) или действия (для контекста действия) или любого другого ...
Чтобы избежать утечки памяти, вы должны использовать контекст приложения для всех компонентов, которым нужен объект контекста .... для более подробной информации нажмите здесь
Контекст - это контекст текущего состояния приложения / объекта. Это объект, который представляет различные данные среды. Контекст помогает текущей деятельности взаимодействовать с внешней средой Android, такой как локальные файлы, базы данных, загрузчики классов, связанные с этой средой, сервисы, включая сервисы системного уровня, и многое другое.
Контекст - это дескриптор системы. Он предоставляет такие услуги, как разрешение ресурсов, получение доступа к базам данных и настройкам и т. Д. В приложении для Android есть действия. Это похоже на дескриптор среды, в которой ваше приложение в данный момент выполняется. Объект действия наследует объект Context.
Различные вызывающие методы, с помощью которых вы можете получить контекст 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. или this (в классе активности).
Контекст означает, что Android узнает, в какую деятельность мне следует пойти или в какую деятельность.
1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
это используется в этом.
Context context = ActivityName.this;
2 -startActivity(new Intent(context,LoginActivity.class));
в этом контексте означает, из какой деятельности вы хотите перейти к другой деятельности. context или ActivityName.this быстрее, getContext и getApplicatinContext.
А Context
это то, что большинство из нас назвали бы Приложением . Он сделан системой Android и может делать только то, что умеет приложение. В Tomcat контекст также является тем, что я бы назвал приложением.
Существует один контекст, который содержит много действий, каждое действие может иметь много представлений.
Очевидно, что некоторые скажут, что это не подходит из-за того или иного, и, вероятно, они правы, но если вы скажете, что Context - это ваше текущее приложение, это поможет вам понять, что вы вводите в параметры метода.
Давайте проведем небольшую аналогию, прежде чем углубляться в технические аспекты контекста.
У каждого босса есть помощник или кто-то (мальчик на побегушках), который делает для него менее важные и более трудоемкие вещи. Например, если им нужен файл или кофе, помощник будет в бегах. Босс не будет знать, что происходит в фоновом режиме, но файл или задание будет доставлено
So Here
Boss - Android Application
Assistant -
Файл контекста или чашка кофе - Ресурс
Контекст - это ваша точка доступа к ресурсам, связанным с приложением
Давайте посмотрим на некоторые из таких ресурсов или задач
Запуск деятельности.
Получение абсолютного пути к каталогу кэша приложения в файловой системе.
Определение того, разрешено ли данное разрешение для определенного процесса, и идентификатор пользователя, работающий в системе.
Проверка, было ли вам предоставлено конкретное разрешение.
И так далее.
Так что, если приложение Android хочет начать действие, оно идет прямо к Context
(Точка доступа), иContext
класс возвращает ему ресурсы (в данном случае Intent).
Как и у любого другого класса, Context
класс имеет поля и методы.
Вы можете узнать больше об Context
официальной документации, она охватывает почти все, доступные методы, поля и даже как использовать поля с методами.
Экземпляры класса android.content.Context обеспечивают соединение с системой Android, которая выполняет приложение. Например, вы можете проверить размер отображения текущего устройства через контекст.
Это также дает доступ к ресурсам проекта. Это интерфейс к глобальной информации о среде приложения.
Класс Context также обеспечивает доступ к службам Android, например, диспетчеру аварийных сигналов для запуска событий, основанных на времени.
Действия и сервисы расширяют класс Context. Поэтому они могут быть непосредственно использованы для доступа к контексту.
Если вы хотите связать Context с другими знакомыми классами в Android, имейте в виду следующую структуру:
Context <ContextWrapper <Приложение
Context <ContextWrapper <ContextThemeWrapper <Деятельность
Context <ContextWrapper <ContextThemeWrapper <Activity <ListActivity
Context <ContextWrapper <Сервис
Context <ContextWrapper <Service <IntentService
Итак, все эти классы являются контекстами по-своему. Вы можете преобразовать Service и ListActivity в Context, если хотите. Но если присмотреться, некоторые классы также наследуют тему. В упражнении или фрагменте вы хотели бы, чтобы они применялись к вашим представлениям, но вам не важно , например, класс обслуживания .
Я объясняю разницу в контекстах здесь .
Проще говоря, Android Context
- это беспорядок, который вы не полюбите, пока не перестанете беспокоиться.
Android Context
являются:
Бог-объекты.
То, что вы хотите передать всем своим приложениям, когда начинаете разработку для Android, но избегаете этого, когда вы немного приблизитесь к программированию, тестированию и самому Android.
Непонятная зависимость.
Общий источник утечек памяти.
PITA для тестирования.
Фактический контекст, используемый системой Android для отправки разрешений, ресурсов, предпочтений, сервисов, трансляций, стилей, отображения диалогов и раздувания макета. И вам нужны разные Context
экземпляры для некоторых отдельных вещей (очевидно, вы не можете показать диалог из контекста приложения или службы; макеты, накачанные из контекста приложения и действия, могут отличаться).
Контекст андроида конкретных апи для каждого приложения-s песочницы , которая обеспечивает доступ приложения личные данные , такую как к ресурсам, базам данных, частным filedirectories, предпочтение, настройка ...
Большинство приватных данных одинаковы для всех видов деятельности / услуг / широковещательных списков одного приложения.
Поскольку Application, Activity, Service реализуют интерфейс Context, их можно использовать там, где для вызова API требуется параметр Context.
Context
означает компонент (или приложение) в различный период времени. Если я ем очень много пищи между 13:00 и 14:00, тогда мой контекст того времени используется для доступа ко всем методам (или ресурсам), которые я использую в течение этого времени. Контент - это компонент (приложение) на определенное время. Context
Компоненты приложения продолжает изменяться на основе базового жизненного цикла компонентов или приложения. Например, внутри onCreate () объекта Activity
,
getBaseContext()
- дает context
из , Activity
который устанавливается (создается) конструктором деятельности.
getApplicationContext()
- дает Context
настройки (созданные) при создании приложения.
Примечание: <application>
содержит все компоненты Android.
<application>
<activity> .. </activity>
<service> .. </service>
<receiver> .. </receiver>
<provider> .. </provider>
</application>
Это означает, что когда вы вызываете getApplicationContext()
изнутри любой компонент, вы вызываете общий контекст всего приложения.
Context
система постоянно изменяется в зависимости от жизненного цикла компонентов.
Думайте о контексте как о блоке с различными ресурсами: строкой, цветами и шрифтами. Если вам нужен ресурс, вы переходите к этому полю. При повороте экрана это поле изменяется, поскольку ориентация меняется на альбомную.
Context
означает текущий.
Context
используйте, чтобы сделать операцию для текущего экрана. ех.
1. getApplicationContext ()
2. getContext ()
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
Великолепные объяснения! В дополнение ко всему вышесказанному, я нашел этот пример из MindOrks очень полезным, даже показывает некоторые базовые сценарии использования, чтобы заставить ваш разум работать:
В Java мы говорим, что это ключевое слово относится к состоянию текущего объекта приложения.
Точно так же у нас есть альтернатива Context
в разработке Android.
Это можно определить явно или неявно,
Context con = this;
getApplicationContext();
getBaseContext();
getContext();
this
работает только в деятельности. Контекст не является альтернативой «этому» - контекст используется для доступа к функциям системы и многого другого. Вы чрезмерно упрощаете Контекст и упускаете с ним главное.
Этот атрибут объявляет, с каким действием этот макет связан по умолчанию .