Почему, ресурсы в android превращаются в HEXA-DECIMAL внутри R.java

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

R.java – это не что иное, как файл класса со статической константой для каждого ресурса вашего проекта. Константа – это номер индекса, который фактически является файловой системой. Поэтому myicon.png задан номер файла 12345. Менеджер ресурсов использует этот индекс для загрузки ресурса во время выполнения. Откройте его. Взглянуть.

Давайте рассмотрим пример R.java:

public final class R { public static final class id { public static final int myTextView=0x7f090008; } } 

Я могу ссылаться на myTextview, используя:

 findViewById(R.id.myTextView) - constant findViewById(0x7f090008) - hex findViewById(2131296264) - decimal findViewById(017702200010) - octal findViewById(0b1111111000010010000000000001000) - binary 

Все они эквивалентны.

Точно так же я мог бы закодировать свой файл R.java следующим образом:

 public final class R { public static final class id { public static final int myTextView=0b1111111000010010000000000001000; } } 

Он по-прежнему работает.

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

Единственная причина для этого – использовать константы. Представьте, что вы поддерживаете свой код, если вам нужно было использовать фактические значения индекса, особенно учитывая, что они могут, и будут меняться каждый раз, когда вы перестраиваете R.java.

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

Файл R.java создается пакетом Manager Manager для Android Manager Manager (aapt.exe) и содержит ссылки на все ресурсы вашего приложения. Каждая ссылка представляет собой уникальный идентификатор (public static final int). Эти константы записываются в файл R.java в шестнадцатеричном формате.

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

Надеюсь, это ваш вопрос