2016-07-28 5 views
0

Известно, что раздувание XML требует доступа к диску, поэтому оно должно быть обычно медленнее, чем раздувание макетов UI из кода Java посредством создания экземпляров View.Раздувание макета из XML по сравнению с Java-кодом

Я пытался найти любые готовые решения для генерации макетов Java из XML, но не нашел их. Поэтому я сделал свои собственные измерения и, к моему большому удивлению, обнаружил, что на быстрых устройствах (S6 и Nexus5 с Android 6.0) комплекс RelativeLayouts с вложенными элементами накапливается еще быстрее от XML, чем от Java-кода!

У вас есть идеи, почему это происходит?

+0

Нет, они не могут быть созданы быстрее с помощью xml, но общая разница не должна быть большой, поэтому, используйте xml, так как это намного проще и довольно быстро, а также – pskink

+0

мои результаты показывают, что макеты создаются на 15% быстрее используя xml, но только для сложных макетов и только на быстрых устройствах. Так может быть, кто-нибудь знает причину. – mike

+0

, так что с вашим java-кодом возникает проблема, почему это так медленно: ведь раздувание от xml сначала считывает ресурсы, 2) анализирует xml 3) использует еще более медленные конструкторы 'View', поскольку он должен использовать отражение, которое не является speed daemon – pskink

ответ

0

Как уже было сказано в другом сообщении здесь: Android xml vs java layouts performance. Производительность с вашим XML-кодом не может быть быстрее, чем ваш Java-код, за исключением того, что вы написали плохой код Java.

+0

Не совсем. Я узнал, что 'new Checkbox (context)' и 'new Switch (context)' занимает около 20 мс каждый, что и послужило причиной замедления моего Java-кода. Когда я удалил эти виджеты, раздувание макета из кода Java стало быстрее, как и должно было быть. – mike

Смежные вопросы