Подтвердить что ты не робот

Производительность Android xml vs java

Android SDK предлагает разработчикам писать макеты в xml файлах или непосредственно в Java-коде. Я прочитал об этом, и все говорят, что xml проще поддерживать и проще писать, но они статичны. В противном случае java-макет динамический, но никто не комментирует проблемы с производительностью. Единственное, что я нашел о производительности, - это макет размещения, который имеет негативное влияние производительности. Вместо написания вложенного макета лучше сделать обычную. Пока что так хорошо;).

Как насчет дизайна макета? xml или java-код? Как файлы xml обрабатывают мой андроид во время выполнения или времени компиляции? Даже если они анализируются во время компиляции, они должны использоваться во время выполнения. Итак, что будет быстрее объявить RelativeLayout в xml или объявить его в методе onCreate?

4b9b3361

Ответ 1

Макет определяет визуальную структуру пользовательского интерфейса, такую ​​как пользовательский интерфейс для виджета активности или приложения. Вы можете объявить макет двумя способами:

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

  • Создавать элементы макета во время выполнения. Ваше приложение может создавать View и ViewGroup (и манипулировать их свойствами) программным способом.

Каркас Android дает вам возможность использовать один или оба этих метода для объявления и управления пользовательским интерфейсом приложения. Например, вы можете объявить свои макеты по умолчанию в приложении XML, включая элементы экрана, которые будут отображаться в них и их свойства. Затем вы можете добавить код в приложение, которое будет изменять состояние объектов экрана, в том числе объявленных в XML, во время выполнения.

Плагин ADT для Eclipse предлагает предварительный просмотр вашего XML-документа - при открывшемся XML файле выберите вкладку "Макет".

Вы также должны попробовать инструмент "Иерархия просмотра" для отладки макетов - он отображает значения свойств макета, рисует каркасы с индикаторами заполнения/поля и полными визуализированными представлениями при отладке на эмуляторе или устройстве.

Средство layoutopt позволяет быстро анализировать макеты и иерархии для неэффективности или других проблем.

    The advantage to declaring your UI in XML is that it enables you to better separate the 
presentation of your application from the code that controls its behavior. Your UI descriptions are
external to your application code, which means that you can modify or adapt it without having to
modify your source code and recompile. For example, you can create XML layouts for different screen
orientations, different device screen sizes, and different languages. Additionally, declaring the
layout in XML makes it easier to visualize the structure of your UI, so it easier to debug 
problems. 

При компиляции приложения каждый файл макета XML скомпилируется в ресурс View. Вы должны загрузить ресурс макета из кода приложения, в свою реализацию Activity.onCreate() callback. Сделайте это, набрав setContentView(), передав ему ссылку на ваш ресурс макета в виде:

Я думаю, что его слишком много просто зайдите на эту ссылку http://developer.android.com/guide/topics/ui/declaring-layout.html и получите дополнительную информацию..

Ответ 2

Одним из основных факторов, определяющих, где объявить компонент пользовательского интерфейса, является поведение во время жизненного цикла приложения. Если он статический, я бы объявил все атрибуты, необходимые в XML, если он изменится в соответствии с взаимодействием с пользователем, я должен будет реализовать его в активности.

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

Ответ 3

Это не большая разница в производительности, потому что ваш xml файл ресурсов также будет предварительно скомпилирован с использованием инструментов aapt. Так что преобразование XML будет происходить с исходными файлами ресурсов и наряду с исходными файлами java они будут скомпилированы в файлы классов Java. Таким образом, также логично, что производительность должна быть примерно такой же, потому что в конечном итоге оба будут скомпилированы, а память для обоих будет выделена во время выполнения. Кроме того, я проверил с моим примером приложения, которое делает аналогичные представления через XML и через Java, и при их профилировании я обнаружил, что рендеринг Views занимает примерно одно и то же время.: -)