Ручная настройка контекста в Android - PullRequest
0 голосов
/ 01 января 2019

Я новичок в разработке для Android, и я провел исследование о Context.Я понимаю, что это такое и почему это полезно.Но я вижу, что Android обрабатывает контекст для меня, например, в действиях, я должен расширить класс, который наследует от контекста, и это все.Однако в некоторых ситуациях я должен вручную добавить контекст к вещи.Например, при создании нового экземпляра вида из kotlin.Я должен передать контекст конструктору представления, например: Button (this)

Почему я должен сообщить экземпляру представления, что он является частью действия явно?

Я являюсьв конце концов, определяя его внутри действия.

Я понимаю, что контекст - это как мост между моим приложением и внешними ресурсами и системными инструментами, но настройка его вручную иногда смущает меня.

Ответы [ 3 ]

0 голосов
/ 01 января 2019

Я нашел эту статью: https://www.101apps.co.za/index.php/articles/all-about-using-android-s-context-class.html

Я думаю, это очень хорошо объясняет, почему мы должны передавать контекст вручную для просмотра экземпляров.

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

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

0 голосов
/ 01 января 2019

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

Однако:

  1. Это неудобно для реализации.Легко иметь автономные представления, каждый из которых уже настроен на свой контекст.
  2. Есть некоторые вещи, которые находятся в контексте и необходимы для манипулирования видом.Например, система ограничений, метрики ... много битов и болтов.Представления также прослушивают события и могут предоставлять некоторые службы, которым требуется контекст, прежде чем они будут присоединены к другому представлению.
  3. Что делать, если у вас несколько контекстов.Вы хотите, чтобы иметь возможность выбрать, на какой контекст ссылаться.Скажем, у вас есть постоянно включенная слишком плавная кнопка, управляемая каким-либо сервисом, и представления, управляемые действием.

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

0 голосов
/ 01 января 2019

Это потому, что для этого может быть много других параметров.

Мы установили context, потому что мы позволяем базовому классу Button (или любому другому, который вы используете) объявить переменную как экземпляр Button, но не другие классы, доступные повсюду!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...