что такое context android studio

Что такое контекст? Более обширный взгляд

Сколько уже разрабатываю приложения, до сих пор не понимаю что такое контекст. Например, возьмем старый добрый Toast

Последний вопрос я задал, так как по ходу написания остальных, я понял, что ничего о нем не знаю 🙂

2 ответа 2

класс Context содержит в себе всевозможную информацию о ресурсах системы, как уже было сказано в другом ответе. Конкретно в этом вопросе нас интересует, что он содержит, помимо прочего, и параметры темы (стилей) для отображения View

Почему в качестве контекста можно передать this? Это же ссылка на класс

Есть ли случаи когда надо передать именно getApplicationContext?

Тема (стиль) всего приложения и конкретной активити может отличаться (для активити в манифесте указан другой стиль). Тогда запрос контекста приложения и контекста активти вернет разное оформление View

Почему контекст нужен везде, где происходит работа с интерфейсом?

Потому что он содержит стиль для View

Возможно в приложении могут существовать и какие то другие отличия в окружении, назначенном всему приложению и конкретной активити, тогда обращение к контексту приложения или активити тоже будет иметь значение, но мне такие отличия (кроме тем и стилей) припомнить не удалось.

контекст приложения следует использовать везде, где контекст необходимо передать за пределы жизненного цикла передающего компонента (в объекты, которые будут жить дольше, чем создавшая/вызвавшая их активность, например) во избежании удержания ссылки на этот компонент при использовании его собственного контекста и утечек памяти.

во внешние библиотеки следует передавать контекст приложения по тем же причинам, что и п.1

контекст приложения не имеет информации по особенностям GUI отдельной активити, если они отличаются от параметров всего приложения, в таких случаях нельзя использовать контекст приложения при работе с GUI этой активити.

Источник

Context в Android приложении

что такое context android studio. Смотреть фото что такое context android studio. Смотреть картинку что такое context android studio. Картинка про что такое context android studio. Фото что такое context android studio

Что такое Context?

Как следует из названия, это контекст текущего состояния приложения или объекта. Это позволяет вновь созданным объектам понять, что вообще происходит. Обычно его вызывают, чтобы получить информацию о другой части программы.

Context присутствует практически повсюду в Android приложении и является самой важной его частью, поэтому необходимо понимать, как правильно его использовать.

Неправильное использование Context может легко привести к утечкам памяти в Android приложении.

Существует много разных типов контекста, поэтому давайте разберёмся, что каждый из них представляет из себя, как и когда их правильно использовать.

Контекст приложения

Например, если вам нужно создать singleton-объект для вашего приложения, и этому объекту нужен какой-нибудь контекст, всегда используйте контекст приложения.

Если вы передадите контекст Activity в этом случае, это приведет к утечке памяти, так как singleton-объект сохранит ссылку на Activity и она не будет уничтожена сборщиком мусора, когда это потребуется.

Таким образом, getApplicationContext() нужно использовать тогда, когда известно, что вам нужен контекст для чего-то, что может жить дольше, чем любой другой контекст, который есть в вашем распоряжении.

Контекст Activity

Этот контекст доступен в Activity и привязан к её жизненному циклу. Контекст Activity следует использовать, когда вы передаете контекст в рамках Activity или вам нужен контекст, жизненный цикл которого привязан к текущему контексту.

getContext() в ContentProvider

Когда нельзя использовать getApplicationContext()?

Правило большого пальца

В большинстве случаев используйте контекст, доступный непосредственно из компонента, в котором вы работаете в данный момент. Вы можете безопасно хранить ссылку на него, если она не выходит за пределы жизненного цикла этого компонента. Как только вам нужно сохранить ссылку на контекст в объекте, который живет за пределами вашей Activity или другого компонента, даже временно, используйте ссылку на контекст приложения.

Источник

Context в Android приложении

что такое context android studio. Смотреть фото что такое context android studio. Смотреть картинку что такое context android studio. Картинка про что такое context android studio. Фото что такое context android studio

Что такое Context?

Как следует из названия, это контекст текущего состояния приложения или объекта. Это позволяет вновь созданным объектам понять, что вообще происходит. Обычно его вызывают, чтобы получить информацию о другой части программы.

Context присутствует практически повсюду в Android приложении и является самой важной его частью, поэтому необходимо понимать, как правильно его использовать.

Неправильное использование Context может легко привести к утечкам памяти в Android приложении.

Существует много разных типов контекста, поэтому давайте разберёмся, что каждый из них представляет из себя, как и когда их правильно использовать.

Контекст приложения

Например, если вам нужно создать singleton-объект для вашего приложения, и этому объекту нужен какой-нибудь контекст, всегда используйте контекст приложения.

Если вы передадите контекст Activity в этом случае, это приведет к утечке памяти, так как singleton-объект сохранит ссылку на Activity и она не будет уничтожена сборщиком мусора, когда это потребуется.

Таким образом, getApplicationContext() нужно использовать тогда, когда известно, что вам нужен контекст для чего-то, что может жить дольше, чем любой другой контекст, который есть в вашем распоряжении.

Контекст Activity

Этот контекст доступен в Activity и привязан к её жизненному циклу. Контекст Activity следует использовать, когда вы передаете контекст в рамках Activity или вам нужен контекст, жизненный цикл которого привязан к текущему контексту.

getContext() в ContentProvider

Когда нельзя использовать getApplicationContext()?

Правило большого пальца

В большинстве случаев используйте контекст, доступный непосредственно из компонента, в котором вы работаете в данный момент. Вы можете безопасно хранить ссылку на него, если она не выходит за пределы жизненного цикла этого компонента. Как только вам нужно сохранить ссылку на контекст в объекте, который живет за пределами вашей Activity или другого компонента, даже временно, используйте ссылку на контекст приложения.

Источник

Что такое «Контекст» на Android?

В Android-программировании, что такое класс Context и для чего он используется?

Я читал об этом на сайте разработчика, но я не могу понять это четко.

Как следует из названия, это контекст текущего состояния приложения / объекта. Это позволяет вновь созданным объектам понять, что происходит. Обычно вы вызываете его, чтобы получить информацию о другой части вашей программы (активность и пакет / приложение).

Типичное использование контекста:

Создание новых объектов : создание новых представлений, адаптеров, прослушивателей:

Доступ к стандартным общим ресурсам : такие службы, как LAYOUT_INFLATER_SERVICE, SharedPreferences:

Доступ к компонентам неявно : относительно поставщиков контента, трансляций, намерений

Определение контекста ::

Упрощенные условия ::

Подумайте, что Person-X является генеральным директором компании-разработчика программного обеспечения.

В компании присутствует ведущий архитектор, этот ведущий архитектор делает всю работу в компании, которая включает в себя базу данных, пользовательский интерфейс и т. Д.

Теперь генеральный директор нанимает нового разработчика.

Именно Архитектор рассказывает об ответственности недавно нанятого человека на основе навыков нового человека, независимо от того, будет ли он работать с базой данных или пользовательским интерфейсом и т. Д.

Упрощенные условия ::

Это похоже на доступ к активности андроида к ресурсу приложения.

Это похоже на то, когда вы посещаете отель, вы хотите завтрак, обед и ужин в подходящие сроки, не так ли?

Есть много других вещей, которые вам нравятся во время пребывания. Как вы получаете эти вещи?

Вы просите человека, обслуживающего номера, принести вам эти вещи.

Здесь человек, обслуживающий номера, является контекстом, считая, что вы являетесь единственным мероприятием, и отель станет вашим приложением, и, наконец, завтрак, обед и ужин должны быть ресурсами.

Вещи, которые связаны с контекстом:

Другой способ описать это: рассматривать контекст как удаленный от телеканала и канала на телевидении – это ресурсы, службы, использование намерений и т. Д. – – – Здесь удаленный выступает как доступ, чтобы получить доступ ко всем разным ресурсам на передний план.

Различные методы вызова, с помощью которых вы можете получить контекст

Тема Контекста в Android, похоже, слишком запутана. Люди просто знают, что контекст необходим довольно часто, чтобы делать базовые вещи в Android. Люди иногда паникуют, потому что они пытаются выполнить некоторую операцию, которая требует контекста, и они не знают, как «получить» правильный контекст. Я попытаюсь демистифицировать идею Context в Android. Полное рассмотрение проблемы выходит за рамки этой публикации, но я попытаюсь дать общий обзор, чтобы вы поняли, что такое Контекст и как его использовать. Чтобы понять, что такое контекст, давайте посмотрим на исходный код:

Что такое Контекст?

Ну, сама документация дает довольно простое объяснение: класс Context – это «Интерфейс для глобальной информации о среде приложения».

Сам класс контекста объявляется как абстрактный класс, реализация которого обеспечивается ОС Android. В документации далее указывается, что Context «… позволяет получить доступ к ресурсам и классам приложений, а также перехватам для операций на уровне приложений, таким как запуск, трансляция и получение намерений и т. Д.».

Теперь вы можете понять, почему имя Context. Это потому, что это так. Контекст предоставляет ссылку или перехват, если потребуется, для Activity, Service или любого другого компонента, тем самым связывая его с системой, обеспечивая доступ к глобальной прикладной среде. Другими словами: Контекст дает ответ на вопрос компонентов «где, черт возьми, я отношусь к приложению в целом и как мне получить доступ / общаться с остальной частью приложения?» Если это все кажется немного запутанным, Посмотрите на методы, предоставляемые классом Context, дает некоторые дополнительные сведения о его истинном характере.

Вот случайная выборка этих методов:

Что общего у всех этих методов? Все они позволяют любому, кто имеет доступ к Контексту, иметь доступ к ресурсам всей заявки.

Контекст, другими словами, перехватывает компонент, который ссылается на него, на остальную среду приложения. Например, ресурсы (думаю, «/ активы» в вашем проекте) доступны во всем приложении, при условии, что «Активность», «Сервис» или что-то еще известно, как получить доступ к этим ресурсам. То же самое касается getResources() который позволяет делать такие вещи, как getResources().getColor() который подключит вас к colors.xml (неважно, что aapt позволяет получить доступ к ресурсам через Java-код, это отдельная проблема).

mBase – это просто поле, заданное конструктором для конкретного контекста. Таким образом, контекст завернут, и ContextWrapper делегирует его реализацию метода getAssets в этот контекст. Перейдем к рассмотрению класса Activity который в конечном итоге наследует от Context чтобы увидеть, как все это работает.

Вероятно, вы знаете, что такое Activity, но для обзора – это в основном «единственная вещь, которую пользователь может сделать. Он заботится о предоставлении окна для размещения пользовательского интерфейса, с которым пользователь взаимодействует ». Разработчики, знакомые с другими API-интерфейсами и даже не разработчиками, могут подумать об этом как о «экране». Это технически неточно, но это не имеет значения для наших целей. Итак, как взаимодействуют Activity и Context и что именно происходит в их отношениях наследования?

Поэтому он использует execStartActivity из класса Instrumentation (фактически из внутреннего класса Instrumentation под названием ActivityResult ).

На этом этапе мы начинаем заглядывать в внутреннюю систему.

Здесь ОС фактически обрабатывает все. Итак, как Instrumentation начинает работу именно так? Ну, параметр this в методе execStartActivity выше – это ваша Activity, то есть Context, и execStartActivity использует этот контекст.

Обзор 30 000: это класс Instrumentation сохраняет следы списка операций, которые он контролирует, чтобы сделать это. Этот список используется для координации всех действий и обеспечения бесперебойной работы всех процессов управления потоком действий.

Последнее слово: почему-то люди, не знакомые с Android (и даже люди, не такие новые), совершенно забывают об объектно-ориентированном программировании, когда дело доходит до Android. По какой-то причине люди пытаются свести свое развитие Android к заранее продуманным парадигмам или изученным поведением.

У Android есть своя парадигма и определенная модель, которая на самом деле довольно последовательна, если отпустить ваши заранее продуманные понятия и просто прочитать документацию и руководство для разработчиков. Однако мой реальный момент, хотя «получение правильного контекста» иногда может быть сложным, люди необоснованно паникуют, потому что они сталкиваются с ситуацией, когда им нужен контекст, и считают, что у них его нет. Еще раз, Java является объектно-ориентированным языком с дизайном наследования.

У вас есть только «контекст» внутри вашей деятельности, потому что ваша деятельность сама наследуется из контекста. Там нет волшебства (за исключением всего, что ОС делает сама по себе, чтобы установить различные параметры и правильно «настроить» ваш контекст). Таким образом, устранение проблем с памятью / производительностью (например, привязка ссылок к контексту, когда вам это не нужно или делать это так, как это имеет негативные последствия для памяти и т. Д.), Контекст – это объект, как любой другой, и его можно передавать Как и любой POJO (обычный Java-объект). Иногда вам может понадобиться делать умные вещи для извлечения этого контекста, но любой обычный Java-класс, который простирается от ничего, кроме самого объекта, может быть написан таким образом, который имеет доступ к контексту; Просто выставляйте публичный метод, который принимает контекст, а затем использует его в этом классе по мере необходимости. Это не предназначалось для исчерпывающего обращения к внутренним компонентам контекста или Android, но я надеюсь, что это поможет в демистификации контекста.

Контекст – это дескриптор системы; Он предоставляет услуги, такие как разрешение ресурсов, получение доступа к базам данных и предпочтениям и т. Д. Приложение Android имеет действия. Это похоже на дескриптор среды, в которой выполняется ваше приложение. Объект Activity наследует объект Context.

Пока вы все равно будете думать, подумайте, большой.

Интерфейс к глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается системой Android.

Он позволяет получить доступ к ресурсам и классам приложений, а также перехватам для операций на уровне приложений, таких как запуск, трансляция и получение намерений и т. Д.

что такое context android studio. Смотреть фото что такое context android studio. Смотреть картинку что такое context android studio. Картинка про что такое context android studio. Фото что такое context android studio

ANDROID AND CONTEXT Если вы просмотрите различные API Android, вы заметите, что многие из них берут объект android.content.Context в качестве параметра. Вы также увидите, что действие или служба обычно используются в качестве контекста. Это работает, потому что оба этих класса простираются от Контекста.

Что такое контекст? В справочной документации для Android это объект, который представляет различные данные среды. Он обеспечивает доступ к локальным файлам, базам данных, загрузчикам классов, связанным с окружающей средой, службам, включая службы на системном уровне, и многое другое. Всюду по этой книге и в вашем ежедневном кодировании с Android вы увидите, что контекст часто проходил. От: книга «Android в практике».

Контекст Android – это «интерфейс», который позволяет получить доступ к конкретным ресурсам приложения и классу и информации о среде приложения.

Если ваше приложение для Android было веб-приложением, ваш контекст был бы похож на ServletContext (я не делаю точное сравнение здесь)

Ваши действия и службы также расширяют контекст, чтобы наследовать все эти методы для доступа к информации о среде, в которой работает приложение.

Простой пример для понимания context в android:

У каждого босса есть помощник, которому нужно ухаживать, выполнять все менее важные и трудоемкие задачи. Если файл или чашка кофе необходимы, помощник в бегах. Некоторые боссы едва знают, что происходит в офисе, поэтому они спрашивают об этом помощников. Они сами выполняют какую-то работу, но для большинства других вещей им нужна помощь их помощников.

Boss – приложение для Android

Помощник – это контекст

Файлы / Чашка кофе – это ресурсы

Обычно мы называем контекст, когда нам нужно получить информацию о разных частях нашего приложения, таких как «Действия», «Приложения» и т. Д.

Некоторые операции (в случае необходимости помощника), где задействован контекст:

Загрузка общих ресурсов Создание динамических представлений Отображение сообщений Toast Запуск действий и т. Д. Различные способы получения контекста:

Подумайте об этом как о виртуальной машине, которая затмила процесс, в котором работает приложение или услуга. Сильная среда имеет доступ к кучу базовой информации о системе и некоторым разрешенным ресурсам. Для этого вам нужен этот контекст.

Просто поместите его туда для новичков;

Итак, сначала поймите контекст Word:

В english-lib. это значит:

«Обстоятельства, которые формируют обстановку для события, заявления или идеи, и с точки зрения которых она может быть полностью понята и оценена».

«Части того, что написано или сказано, что непосредственно предшествует и следует за словом или проходом и разъясняет его смысл».

Теперь возьмите такое же понимание в мире программирования:

Контекст текущего состояния приложения / объекта. Это позволяет вновь созданным объектам понять, что происходит. Обычно вы вызываете его, чтобы получить информацию о другой части вашей программы (активность, пакет / приложение)

Чтобы получить контекст Anywhere в приложении, используйте следующий код:

Создайте новый класс AppContext в своем приложении для Android.

Теперь в любой момент, когда вы хотите использовать контекст приложения в классе неактивности, вызовите этот метод, и у вас есть контекст приложения.

Надеюсь эта помощь;)

Контекст – это ссылка на текущий объект. Также контекст позволяет получить доступ к информации о среде приложения.

Способы получения контекста:

Класс android.content.Context обеспечивает подключение к системе Android и ресурсам проекта. Это интерфейс для глобальной информации о среде приложения.

Контекст также предоставляет доступ к службам Android, например службе местоположения.

Контекст в основном предназначен для доступа к ресурсам и получения сведений о среде приложения (для контекста приложения) или активности (для контекста активности) или любого другого …

Чтобы избежать утечки памяти, вы должны использовать контекст приложения для каждого компонента, для которого нужен объект контекста …. для более подробной информации нажмите здесь

Интерфейс к глобальной информации о среде приложения. Это абстрактный класс, реализация которого обеспечивается системой Android. Он позволяет получить доступ к ресурсам и классам приложений, а также перехватам для операций на уровне приложений, таких как запуск, трансляция и получение намерений и т. Д.

Контекст – это контекст текущего состояния приложения / объекта. Он представляет собой объект, который представляет различные данные среды. Контекст помогает текущей активности взаимодействовать с внешней средой андроида, например локальными файлами, базами данных, загрузчиками классов, связанными с окружающей средой, услугами, включая услуги на системном уровне, и многое другое.

Контекст – это дескриптор системы. Он предоставляет такие услуги, как разрешение ресурсов, получение доступа к базам данных и предпочтениям и т. Д. Приложение для Android имеет действия. Это похоже на дескриптор среды, в которой выполняется ваше приложение. Объект Activity наследует объект Context.

Различные методы вызова, с помощью которых вы можете получить контекст 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. или это (когда в классе активности).

Контекст – это экземпляры класса android.content.Context обеспечивает подключение к системе Android, которая выполняет приложение. Например, вы можете проверить размер текущего дисплея устройства через контекст.

Он также предоставляет доступ к ресурсам проекта. Это интерфейс для глобальной информации о среде приложения.

Класс Context также предоставляет доступ к службам Android, например, диспетчер аварийных сигналов для запуска событий, основанных на времени.

Деятельность и услуги расширяют класс Context. Поэтому их можно напрямую использовать для доступа к Контексту.

Context позволяет получать доступ к ресурсам и классам приложений, а также вызывает операции на уровне приложения, такие как launching activities, broadcasting and receiving intents, etc.

Экземпляры класса android.content.Context обеспечивают подключение к системе Android, которая выполняет приложение. Например, вы можете проверить размер текущего дисплея устройства через контекст.

Он также предоставляет доступ к ресурсам проекта. Это интерфейс для глобальной информации о среде приложения.

Класс Context также предоставляет доступ к службам Android, например, диспетчер аварийных сигналов для запуска событий, основанных на времени.

Деятельность и услуги расширяют класс Context. Поэтому их можно напрямую использовать для доступа к Контексту.

Существует один Контекст, который содержит много Деяний, и каждое действие может иметь много видов.

Очевидно, что некоторые скажут, что они не подходят из-за того или иного, и они, вероятно, правы, но говорят, что контекст – это ваше текущее приложение, которое поможет вам понять, что вы вкладываете в параметры метода.

Если вы хотите подключить Контекст к другим знакомым классам на Android, имейте в виду эту структуру:

Контекст – это специфический айфон для каждого приложения, который предоставляет доступ к частным данным приложения доступа к ресурсам, базе данных, приватным файлам, настройкам, настройкам …

Большинство приватных данных одинаковы для всех видов деятельности / услуг / распространителей одного приложения.

Поскольку Application, Activity, Service реализуют интерфейс Context, они могут использоваться там, где для вызова api необходим параметр Context

Контекст означает текущий. Использование контекста для работы на текущем экране. ех. 1.getApplicationContext () 2.getContext ()

Контекст – это контекст текущего состояния приложения / объекта. Он представляет собой объект, который представляет различные данные среды. Контекст помогает текущей активности взаимодействовать с внешней средой андроида, например локальными файлами, базами данных, загрузчиками классов, связанными с окружающей средой, услугами, включая услуги на системном уровне, и многое другое.

Контекст – это дескриптор системы. Он предоставляет такие услуги, как разрешение ресурсов, получение доступа к базам данных и предпочтениям и т. Д. Приложение для Android имеет действия. Это похоже на дескриптор среды, в которой выполняется ваше приложение. Объект Activity наследует объект Context. Примеры использования контекста:

TextView tv = новый TextView (getContext ()); Адаптер ListAdapter = новый SimpleCursorAdapter (getApplicationContext (), …);

GetApplicationContext (). GetContentResolver (). Query (uri, …);

Разница между контекстом работы и контекстом приложения:

Это оба экземпляра контекста, но экземпляр приложения привязан к жизненному циклу приложения, а экземпляр Activity привязан к жизненному циклу Activity. Таким образом, они имеют доступ к различной информации о среде приложения.

If you read the docs at getApplicationContext it notes that you should only use this if you need a context whose lifecycle is separate from the current context.

But in general, use the activity context unless you have a good reason not to.

The documentation says that every view needs the context to access the right resources (eg the theme, strings etc.).

But why in the constructor and not through setContentView(View)?

1.Because the resources must be accessible while the view is being constructed (the constructor will need some resources to fully initialise the view).

2.This allows the flexibility of using a context that is different from the one of the current activity (imagine a view that uses some other string resources and not the ones from the current activity).

3.The designers of the Android SDK seem to have chosen that the context must be set only once and then stay the same throughout the lifetime of the view. Why context is not determined automatically at construction point?

1.Because there exists no static variable that would tell you the current global context of your application. The method getApplicationContext() is the closest to this, but it’s not static, so you need an instance of the Activity object to call it.

2.The Java language provides an option to look through the call stack and find whether the View has been constructed in a Context class. But what if there are many? Or what if there are none? This method is very expensive and error prone. So the designers of the API decided that a context must be manually provided.

Putting simple, Androids Context is a mess that you won’t love until you stop worrying about.

Android Context s are:

Thing that you want to pass around all your application when you are starting developing for Android, but will avoid doing it when you get a little bit closer to programming, testing and Android itself.

Common source of memory leaks.

Actual context used by Android system to dispatch permissions, resources, preferences, services, broadcasts, styles, showing dialogs and inflating layout. And you need different Context instances for some separate things (obviously, you can’t show a dialog from an application or service context; layouts inflated from application and activity contexts may differ).

Context in Android is an interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.

In Java, we say » this » keyword refers to the state of the current object of the application. Similarly, in an alternate we have Context in android development.

This can be defined either explicitly or implicitly,

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *