Читая страницу Онлайн-руководства для разработчиков по макетам XML , я нашел следующее утверждение:
Ваши описания пользовательского интерфейса являются внешними по отношению к коду вашего приложения, что означает, что вы можете изменить или адаптировать его без необходимости изменять исходный код и перекомпилировать.
Я знаю о многих преимуществах XML-макетов и ресурсов, но, поскольку XML-файлы размещаются внутри APK, я думаю, что нет реального способа изменить графический интерфейс без переупаковки. Я имею в виду, что большинство из нас используют плагин eclipse ADT и ANT для упаковки приложений, поэтому нет никакой реальной выгоды в том, чтобы не компилировать файлы классов (поскольку после изменения файлов ресурсов разработчику придется перепаковать приложение и создать новый APK). файл). Из-за этого невозможно переустановить только графический интерфейс на устройствах без повторного развертывания всего APK.
Если это предположение верно, то XML-файлы будут одинаковыми в течение всего времени жизни APK-файла. Я предполагаю, что эти файлы (особенно файлы макета) должны быть проанализированы и обработаны во время выполнения (перед onCreate действия), что было бы менее эффективно, чем программная сборка GUI (как в Swing). Макет обычно не является узким местом, но если я прав, я вижу здесь небольшую трату времени, которую можно было бы лучше использовать (например, с анимацией).
Читая ту же страницу, она гласит:
При компиляции приложения каждый файл макета XML компилируется в ресурс View.
Проверяя один из моих APK, я искал предварительно скомпилированный файл внутри classes.dex
, и нет ничего, кроме моих классов Java и файла R.class
. XML-файлы макета находятся внутри /res/layout folder
, и есть файл с именем resources.arsc
, который, по-видимому, содержит информацию о других ресурсах (строки, имена значков), но, по-моему, ничего не относится к Views (поправьте меня, если я ошибаюсь) ).
Мои вопросы:
- Предварительно ли скомпилированы файлы макета XML и в какой файл?
- Если нет, есть ли опция компиляции для полной предварительной компиляции информации макета в файл для ускорения загрузки? (в идеале это будет файл класса)
- Если нет, есть ли способ создать этот файл при первом выполнении и кэшировать его в папке установки приложения, чтобы последующие выполнения во время выполнения могли читать этот файл вместо анализа XML и иметь более быстрое время загрузки?
Заранее спасибо.