Является ли ID в XML причиной того, что конструктор файлов ресурсов объявляет экземпляр в Android? - PullRequest
0 голосов
/ 27 сентября 2011

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

  • действительно ли упомянутый идентификатор в XML приводит к тому, что конструктор файлов ресурсов объявляет экземпляр объекта, чтобы мы могли использовать?
  • или он просто объявляет экземпляр в любом случае, даже если мы не упоминаем идентификатор?

1 Ответ

1 голос
/ 27 сентября 2011

Итак, позвольте мне объяснить, что на самом деле происходит в фоновом режиме.

У нас есть стандартная HashMap, которая имеет ключ и значение. Способ, которым работает хэш-карта, заключается в генерации хеш-значения из ключа.который используется для картирования.

Так, например, если strings.xml содержит

<string name="app_name">Hello, Android</string>

"app_name" - это ключ, который хэшируется с использованием некоторой хеш-функции и с использованием этого местоположения: String "Hello,Android "сохраняется - как обычно работает Java HashMap.

Итак, давайте повторим это снова

Когда вы говорите map.get (" app_name ");хеш-функция называется следующим образом. generatehash ("имя_приложения"), и это значение используется для вычисления позиции значения (Hello, Android)

Так что каждый раз, когда мы получаем значение из этого HashMap,в конечном итоге мы вызываем эту функцию generatehash () - хотя это O (1), это все еще некоторая обработка.Чтобы сделать это немного более эффективным и тратить меньше вычислительной мощности (мобильные устройства спроектированы с учетом очень низкого объема памяти) - эта функция generatehash () вызывается только во время компиляции

В этом и заключается идея - поэтому хеш-значения вычисляются во время компиляции и помещаются в этот файл с именем R.java ... Итак, во время выполнения мы имеем однозначное сопоставление ключа с хеш-кодом.значение и это хеш-значение непосредственно используется при поиске фактического ресурса:)

Таким образом, помня об этом, ресурсы доступны «в памяти» в каком-то конкретном месте - как HashMap, и это местовычисляется с использованием хеш-значения, которое присутствует в R.java

Надеюсь, что оно отвечает на ваш вопрос.

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