tldr:
Насколько я понимаю, нет никакой разницы в зависимости от использования памяти, только если вы не используете все виды макета. Оба кэшируют представления, однако andoid kotlin получает по требованию, а привязка данных инициализирует все. В зависимости от производительности расширения kotlin немного (я бы сказал, в большинстве случаев не распознаваемые) быстрее, чем привязка данных при создании фрагмента / действия.
Документация Kotlin для Android:
Добавляет скрытую функцию кэширования и поле внутри каждого Kotlin
Деятельность. Метод довольно маленький, поэтому он не увеличивает размер
АПК много. Заменяет каждый вызов синтетического свойства на функцию
позвонить.
Как это работает, при вызове синтетического свойства, где
получатель - это класс активности / фрагмента Kotlin, который находится в модуле
Источники, функция кэширования вызывается. Например, учитывая
class MyActivity : Activity() fun MyActivity.a() {
this.textView.setText(“”)
}
внутри MyActivity создается скрытая функция кэширования, поэтому мы можем
используйте механизм кеширования.
Однако в следующем случае:
fun Activity.b() {
this.textView.setText(“”)
}
Мы бы не знали, будет ли эта функция вызываться только для операций
из наших источников или на простой Java деятельности. Таким образом, мы не
используйте там кеширование, даже если экземпляр MyActivity из предыдущего
Примером является получатель.
Причина: Kotlin использует синтетические свойства, которые вызываются по требованию с использованием функции кэширования (отсюда и небольшая быстрая загрузка Activity / Fragment), в то время как Databinding привязывает все представления одновременно (что занимает немного больше времени).