【Jetpack】ViewBinding 与 DataBinding的区别

news/2024/10/21 9:54:18/

一、DataBinding

DataBinding 是 2016 年的 Android Studio 2.0 版本 开始使用的 , 其作用是实现 数据模型 Model 与 视图 View 的绑定 , 该绑定是双向的绑定 ;

  • 数据模型 Model 就是 数据类的实例对象 ;

  • 视图 View 指的是 Xml 布局文件 ;

DataBinding 就是将 数据模型实例对象 配置到 Xml 布局文件 中 ;

DataBinding 可以代替的代码逻辑 :

  • findViewById

  • setOnClickListener

  • setText

  • setVisibility

  • setEnable

  • setXxx

很明显 , DataBinding 可以 在 Activity / Fragment / Dialog 中获取组件 , 在 Xml 布局文件中 设置点击事件 , 设置文本 , 设置可见性 等等 ;

二、ViewBinding

ViewBinding 是 2019 年 Android Studio 3.6 版本 开始使用的 , 其作用是 为 Xml 布局文件 生成绑定类 , 借助该 绑定类 , 可以 快速获取 Xml 中的组件 ;

ViewBinding 可以代替的代码逻辑 :

  • findViewById

  • 定义 View 组件的成员字段

ViewBinding 与 ButterKnife 功能基本一致 , 编译性能优于 ButterKnife , 因为 ButterKnife 中使用了大量的注解 , 其编译速度要低于 ViewBinding ;

ViewBinding 与 DataBinding 比较 , ViewBinding 是一个量级较轻的函数库 ;

  • 集成 DataBinding 要比 ViewBinding 编译速度慢很多 ;

  • 集成 DataBinding 编译后的 Apk 要比 ViewBinding 大几十 KB ;

如果只是想要省略 findViewById 代码 , 使用 ViewBinding 即可 ;


http://www.ppmy.cn/news/66101.html

相关文章

学习网络基础

1.1 什么是网络与网络发展史 网络与网络发展史是指计算机网络从产生至今的演变历程。计算机网络的发展可以追溯到20世纪60年代,当时美国国防部高级研究计划局(ARPA)开始研究一种新型的计算机通信技术,称为分组交换技术。这种技术可以将数据分成多个小块…

hive物化视图

-- 物化视图 需要事务支持的 -- 物化视图 需要事务表上创建 -- 解决create materialized view报错(表前提必须是orc): Automatic rewriting for materialized view cannot be enabled if the materialized view uses non-transactional tables ALTER table tb1111 SET TBLPROPE…

JVM-类加载机制

类的生命周期 ​ 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,**它在某些情况下可以在初始化阶段之后开始,这是为…

Redis高可用系列——Set类型底层详解

文章目录 概述intsetintset 和 hashtable 的转换为什么加入了listpackhashtable 的空间开销高hashtable 的碰撞概率高intset 、listpack和hashtable的转换 概述 在讲解set结构之前,需要先说明一下set结构编码的更替,如下 在Redis7.2之前,se…

理解和使用Java中的枚举

枚举是一种特殊的数据类型,用于定义一组具名的常量。Java中的枚举类型可以包含多个枚举常量,每个常量都具有唯一的名称和值。本文将详细介绍Java中的枚举,包括为什么要使用枚举、枚举的好处、如何定义和使用枚举等。 为什么要使用枚举&#…

【计算机视觉 | ViT-G】谷歌大脑提出 ViT-G:缩放视觉 Transformer,高达 90.45% 准确率

文章目录 一、简介二、如何做到的?三、扩展数据四、「head」 的解耦权重衰减五、通过移除 [class] token 节省内存六、实验结果6.1 将计算、模型和数据一起扩展6.2 ViT-G/14 结果 论文地址为: https://arxiv.org/pdf/2106.04560.pdf一、简介 视觉 Trans…

Linux安装Kafka

本文介绍Linux安装Kafka。 1.Kafka简介 Kafka也是开源与Apache开源基金会的项目,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统。 在百度百科是这样介绍的: Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala…

全面理解哈希,哈希的底层原理是如何实现的,哈希题型的做题思路与题目清单(不断更新)

什么是哈希 哈希(Hash)是一种算法,它接受一个输入(或“消息”),并返回一个固定大小的字符串。这个输出字符串的大小通常以字节为单位,输出的内容看起来是随机的且整个过程是单向的。 哈希的一…