Последний снимок в том, что контекст в Android

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

Как указано в документации, это интерфейс к ресурсам.

1-й вопрос Что такое контекст? Что означает, что это интерфейс к ресурсам?

2-й вопрос. Почему мы все это время передаем, не будет ли каждый вид деятельности и т. Д. Иметь доступ к тем же ресурсам?

3-й вопрос
Почему нужен контекст во всех сценариях? Например, Button myButton = new Button(this);

4-й вопрос Еще один вопрос о том, почему контекст передается, например, listadapters?

Спасибо за ваше время:)

Помогло бы вам визуализировать Context как указатель на ваш родительский объект?

Итак, вот почему в вашем примере вы создаете Button с

 Button myButton = new Button ( this ); 

Кнопка (и Android) должна знать, с какой целью она должна быть связана для правильного управления ресурсами (как вы сами сказали – не забывайте, что это для Android так же, как для вас или вашего пользователя) и Знаете, например, когда запускать ваш onClick() . Не зная, в каком Context ваша кнопка существует, как Android знает, показывать или нет? Как Android знает, отправлять ли события onClick () или нет? Это потому, что он знает контекст кнопки.

Если контекст ваших кнопок совпадает с активным действием, то он отображается пользователю и должен управляться по-разному с объектом, который не отображается – например, видимая активность и ее ресурсы будут последними объектами, которые будут убиты в Ситуация с отсутствием памяти.

Это ничем не отличается от других операционных систем и графических инструментов, это просто другая терминология.

Контекст это интерфейс к ресурсам, но сенсорный экран – это ресурс, память – это ресурс, CPU – это ресурс – вы слишком узко думаете о том, что представляет собой ресурс (и опять же, это действительно просто семантика); Ресурсы – это не только звуковые файлы, либо значки или макеты – есть ресурсы, которыми управляет Android, и он должен знать Context ваших объектов, чтобы правильно управлять этими внешними ресурсами.

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

Концепция контекста глубоко укоренена в андроиде. Проще говоря, это мое объяснение:

  1. Android – это многопоточная платформа.
  2. Там в одном потоке пользовательского интерфейса, где все, что видит пользователь, нарисовано, и в фоновом режиме могут быть «n» рабочие потоки.
  3. Каждое действие / сервис запускается в своем потоке.
  4. Каждое действие имеет локальный набор макетов / изображений / mp3 и т. Д.
  5. Каждое действие идентифицируется во время выполнения его «Контекстом». Подумайте об этом как о идентификаторе. Таким образом, все, что вы, возможно, захотите сделать в этом действии, вы должны сделать это со ссылкой на контекст.

Надеюсь, что это положительный ответ на вопросы 1,2,3,4

1-й вопрос Что такое контекст? Что означает, что это интерфейс к ресурсам?

Хм .. Контекст Я считаю, вы понимаете, что он говорит вам, где именно вы. Как вы знаете, понятие этого указателя в Java такое же. Система предоставляет каждому приложению контекст. Необходимо упомянуть ресурсы, которые необходимо использовать в этом контексте. И все это потому, что Android многопоточен. Дело не в том, что вы входите внутрь деятельности, и вы будете иметь дело только с одним потоком.

2-й вопрос. Почему мы все это время передаем, не будет ли каждый вид деятельности и т. Д. Иметь доступ к тем же ресурсам?

Хорошо, когда у нас есть один класс и внутренний класс, тогда, если вы используете «это» внутри внутреннего класса, тогда ваши компоненты будут воспринимать внутренний контекст класса, а не внешний класс, даже если вы имели в виду внешний класс. Здесь вам нужно будет указать, указав свое имя внешнего класса. Это означает, что вы четко указываете, что хотите использовать внешний класс.

Почему нужен контекст во всех сценариях? Например, Button myButton = new Button(this) ;

Теперь Button и любой другой виджет должны быть известны, на каком представлении они должны быть. Поэтому, указав контекст, вы даете понять виджету. Скажем, у меня есть два класса внутри java-файла, и теперь вы используете виджет кнопки. Как виджет точно узнает, куда он должен идти.

Надеюсь, ответ на ваш четвертый вопрос тоже будет таким же.

Intereting Posts
Почему образец используется? При ссылке на список стилейSeparatorTextViewStyle? Android / bitmap.h: Нет такого файла или каталога (после обновления инструментов Android SDK до версии 14) Фрагмент, созданный при изменении вкладки с помощью ViewPager Исключение «Недопустимый символ в запросе по индексу -» в Android Есть ли реальное решение для отладки приложений cordova GooglePlayServices недоступен из-за ошибки 2 Работа с портретом и ландшафтным режимом программно в андроиде Интеграция GreenDao с доработкой Ошибка: невозможно получить отладочный мост в студии Android Изменение метаданных в метаданных приложения менеджера пакетов в android Запретить пользователю вставлять больше символов после ограничения размера в поле EditText Android: значок приложения как кнопка вверх не работает Padding / Space Application bar между значком и заголовком (Android 24) Android – Отсутствуют платформы NDK? OAuth 1.0 Библиотеки для Android (java)