Это будет моей последней попыткой понять, что означает контекст на 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,2,3,4
1-й вопрос Что такое контекст? Что означает, что это интерфейс к ресурсам?
Хм .. Контекст Я считаю, вы понимаете, что он говорит вам, где именно вы. Как вы знаете, понятие этого указателя в Java такое же. Система предоставляет каждому приложению контекст. Необходимо упомянуть ресурсы, которые необходимо использовать в этом контексте. И все это потому, что Android многопоточен. Дело не в том, что вы входите внутрь деятельности, и вы будете иметь дело только с одним потоком.
2-й вопрос. Почему мы все это время передаем, не будет ли каждый вид деятельности и т. Д. Иметь доступ к тем же ресурсам?
Хорошо, когда у нас есть один класс и внутренний класс, тогда, если вы используете «это» внутри внутреннего класса, тогда ваши компоненты будут воспринимать внутренний контекст класса, а не внешний класс, даже если вы имели в виду внешний класс. Здесь вам нужно будет указать, указав свое имя внешнего класса. Это означает, что вы четко указываете, что хотите использовать внешний класс.
Почему нужен контекст во всех сценариях? Например,
Button myButton = new Button(this)
;
Теперь Button и любой другой виджет должны быть известны, на каком представлении они должны быть. Поэтому, указав контекст, вы даете понять виджету. Скажем, у меня есть два класса внутри java-файла, и теперь вы используете виджет кнопки. Как виджет точно узнает, куда он должен идти.
Надеюсь, ответ на ваш четвертый вопрос тоже будет таким же.