首页
学习
活动
专区
圈层
工具
发布

Android 视图绑定 ViewBinding

一个叫做视图绑定(ViewBinding),而另外一个叫做数据绑定(DataBinding)。 1....总结 与使用 findViewById 相比,视图绑定具有的优点: Null 安全:由于视图绑定会创建对视图的直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常的风险。...此外,如果视图仅出现在布局的某些配置中,则绑定类中包含其引用的字段会使用 @Nullable 标记。 类型安全:每个绑定类中的字段均具有与它们在 XML 文件中引用的视图相匹配的类型。...而相较于DataBinding 的优势在于: 更快的编译速度:视图绑定不需要处理注释,因此编译时间更短。 易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。...在模块中启用视图绑定后,它会自动应用于该模块的所有布局。 而DataBinding 的优势就在于:布局和数据的双向绑定了。 所以其实我们可以在项目之中同时使用视图绑定和数据绑定。

1.8K10

Android:Jetpack之视图绑定——ViewBinding

历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者从最初的框架少、没规范、代码都得自己写,到轮子、框架满天飞。...Data Binding→数据绑定,可使用声明式将布局中的界面组件绑定到应用中的数据源; Lifecycles→生命周期感知,可感知和响应Activity和Fragment的生命周期状态的变化; LiveData...本节开始折腾,先带来一个超简单的 → ViewBinding(视图绑定)。...注:使用ViewBinding,AGP版本需 >= 3.6 接着介绍下基本用法,部分内容搬运自官方文档: 《视图绑定》 ① 启用ViewBinding 需要启用视图绑定的Module,在其build.gradle...DataBinding都有,不需要数据绑定,单纯想替代findViewById可以用ViewBinding。

2.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android视图绑定ViewBinding的使用

    前言 后台读者留言:能否写一篇视图绑定ViewBinding相关的内容? 首先感谢这位读者的提议,让我抽出时间细看视图绑定的内容,也打算在项目中使用该功能。...目前,谷歌在 Android Studio 3.6 Canary 11 及更高版本中加入了新的视图绑定方式ViewBinding。...分析 本文主要从以下方面对ViewBinding进行分析: 使用能解决什么问题; 使用流程; 与之前方法的比较; 原理; 1.使用能解决什么问题 顾名思义ViewBinding的意思就是如何将view与代码绑定在一起...在gradle文件中开启ViewBinding功能后,编译器就会为此模块下的每个布局文件都产生一个对应的绑定类。...Null safety: findViewById, ButterKnife与Kotlin Android Extensions 均存在Null不安全问题。这个什么意思呢?

    3K10

    Android视图绑定ViewBinding的使用

    前言 后台读者留言:能否写一篇视图绑定ViewBinding相关的内容? 首先感谢这位读者的提议,让我抽出时间细看视图绑定的内容,也打算在项目中使用该功能。...目前,谷歌在 Android Studio 3.6 Canary 11 及更高版本中加入了新的视图绑定方式ViewBinding。...分析 本文主要从以下方面对ViewBinding进行分析: 使用能解决什么问题; 使用流程; 与之前方法的比较; 原理; 1.使用能解决什么问题 顾名思义ViewBinding的意思就是如何将view与代码绑定在一起...在gradle文件中开启ViewBinding功能后,编译器就会为此模块下的每个布局文件都产生一个对应的绑定类。...Null safety: findViewById, ButterKnife与Kotlin Android Extensions 均存在Null不安全问题。这个什么意思呢?

    3.2K20

    Android:Jetpack之视图绑定——ViewBinding

    历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者从最初的框架少、没规范、代码都得自己写,到轮子、框架满天飞。...Data Binding→数据绑定,可使用声明式将布局中的界面组件绑定到应用中的数据源; Lifecycles→生命周期感知,可感知和响应Activity和Fragment的生命周期状态的变化; LiveData...本节开始折腾,先带来一个超简单的 → ViewBinding(视图绑定)。...注:使用ViewBinding,AGP版本需 >= 3.6 接着介绍下基本用法,部分内容搬运自官方文档: 《视图绑定》 ① 启用ViewBinding 需要启用视图绑定的Module,在其build.gradle...DataBinding都有,不需要数据绑定,单纯想替代findViewById可以用ViewBinding。

    1.3K30

    【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )

    如果为该 Android 项目启用了视图绑定模块 , 所有的布局都会生成对应的视图绑定类 ; 4 ....); //由于视图绑定类中的视图并未与该 Activity 界面关联 // 因此单纯的操作该视图绑定类不能修改本界面的 TextView 显示文字 binding.textView.setText...ActivityMainBinding 获取的组件无法控制界面 , 这是因为该 ActivityMainBinding 视图绑定类 , 并没有与 Activity 关联 ; 3 ....关联界面操作 : setContentView(binding.getRoot()) 操作就是将视图绑定类与 Activity 界面关联了起来 , 此时操作视图绑定类就可以修改界面内容了 ; V ....视图绑定 ( ViewBinding ) 本质分析 ---- 视图绑定 ( ViewBinding ) 其本质就是提供了一种加载布局文件的便捷方式 , 与下面的操作本质是类似的 , 只是可以省略很多代码

    1K10

    Android DataBinding 数据绑定

    Android DataBinding Framework 在2015年的谷歌IO大会上,Android UI Toolkit团队发布了DataBinding 框架,将数据绑定引入了Android开发,...data.defaultVal 事件绑定 严格意义上来说,事件绑定也属于数据绑定的一种。之前我们常在布局内进行的android:onClick="onBtnClick"就可以视作是一种数据绑定。...根据脏标记位和相关的值进行位与运算来判断。在构造函数的最后,脏标记位被设为0x10L,即第5位为1,在这种情况下,上述代码中的每一个分支都为真,都会被执行,即进行了一次全量的绑定操作。...在设置了双向绑定的控件上,为其添加对应的监听器,监听其变动,如:EditText上设置TextWatcher。...如果需要让自定义控件支持数据绑定,可以参考实现。 ? ? 为了监听代码改动我们传入的监听器是什么呢? ?

    2.9K70

    【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

    一、数据模型 Model 与视图 View 双向绑定 ---- 1、数据模型 Model 与视图 View 的单向绑定 在之前的博客中 , 将 数据模型 Model 中的 指定 Field 字段 绑定到...实现数据模型 Model 与视图 View 双向绑定 ---- 示例代码 : https://download.csdn.net/download/han1202012/87702558 1、启用 DataBinding...{ } 4、BaseObservable 实现双向绑定 ( 本博客的核心重点 ) ★ 实现 数据 与 视图 的双向绑定类 , 需要继承 BaseObservable 类 ; class StudentViewModel...Model 与视图 View 双向绑定 ( 本博客的核心重点 ) ★ ---- 示例代码 : ObservableField 实现数据模型 Model 与视图 View 双向绑定 与 BaseObservable...实现数据模型 Model 与视图 View 双向绑定 进行对比 , 除了 StudentViewModel 之外 , 其它代码都一样 ; 重点介绍 StudentViewModel 类 ; 将数据模型类

    1.8K30

    微信小程序|视图数据的绑定

    解决方案 视图的数据绑定需要让这个视图的每一个部分与对应的数据做一个映射。建立这种映射了之后开发者就只需要关注如何获取到这个数据,然后进行更新。...这样在更新的时候我们只需要对映射的内容进行修改,视图就会自动的更新。...4", comment:"最精彩的科幻片", imagePath:"/pages/img/图片1.jpg" },count:123,score:80 }}) 表1 (2)绑定数据输出到视图中进行显示...将定义的变量渲染输出显示是通过{{ }}进项数据绑定的 {{count+score}}是进行简单数据的运算 {{(score>=60)?"...图2 结语 将视图的每一部分与对应的数据做一个映射,定义内部状态变量将数据与变量绑定,然后到wxml中用双大括号进行渲染输出。

    1.2K30

    Android的内存分配与回收

    想写一篇关于android的内存分配和回收文章的想法来源于追查一个魅族手机图片滑动卡顿问题,我们想了很多办法还是没有避免他不停的GC,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC...2.2 对象分配和回收的几个数据指标         记得我们之前在优化魅族某手机的gc卡顿问题时,发现他很容易触发GC_FOR_MALLOC,这个GC类别后续会说到,是分配对象内存不足时导致的。...但是(LiveSize / U)必须大于等于(LiveSize + MinFree)并且小于等于(LiveSize + MaxFree),每次GC后垃圾回收器都会尽量让堆的利用率往目标利用率靠拢。...2.5 回收算法和内存碎片         主流的大部分Davik采取的都是标注与清理(Mark and Sweep)回收算法,也有实现了拷贝GC的,这一点和HotSpot是不一样的,具体使用什么算法是在编译期决定的...另外根据谷歌自己的数据来看,Art相对Dalvik内存分配的效率提高了10倍,GC的效率提高了2-3倍。

    1.6K80

    【JetPack】kotlin-android-extensions 插件 ( 视图绑定简单用法 )

    文章目录 一、动画效果添加对象 二、kotlin-android-extensions 插件使用步骤 1、配置 kotlin-android-extensions 插件 2、导入视图 3、完整布局文件...4、Activity 完整代码示例 一、动画效果添加对象 ---- kotlin-android-extensions 插件 实现了 视图绑定 功能 , 开发过程中 , 可以不用调用如下形式 : ①...传统方法 : findViewById(R.id.textView) ② 注解绑定 : @BindView(R.id.textView)lateinit var textView:TextView ③...视图绑定 : ActivityMainBinding.inflate(getLayoutInflater()).textView kotlin-android-extensions 插件视图绑定在导入...' id 'kotlin-android-extensions' id 'kotlin-kapt' } 2、导入视图 在 Activity 中导入视图 : import kotlinx.android.synthetic.main.activity_main

    98300

    垃圾回收算法与 JVM 垃圾回收器综述

    当我们在讨论垃圾回收器时,往往也会涉及到很多的概念;譬如并行(Parallel)与并发(Concurrent)、Minor GC 与 Major / Full GC。...垃圾回收器负载:和吞吐量相反,垃圾回收器负载指来记回收器耗时与系统运行总时间的比值。 停顿时间:指垃圾回收器正在运行时,应用程序的暂停时间。对于独占回收器而言,停顿时间可能会比较长。...如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。...并发重置(Concurrent reset):这个阶段,重置CMS回收器的数据结构,等待下一次垃圾回收。...每个 Region 都有一个关联的 Remembered Set(简称RS),RS 的数据结构是 Hash 表,里面的数据是 Card Table (堆中每 512byte 映射在 card table

    86180

    JVM垃圾回收器、内存分配与回收策略

    ParNew收集器 parNew收集器即并行收集器,采用的是多线程方式进行垃圾回收,可以理解为Serial收集器的多线程版本,吞吐量要比串行高很多,是服务器级别的虚拟机默认使用的,用来处理新生代的垃圾回收器...一般的垃圾回收器是在尽量短的时间内进行垃圾回收,这样程序与用户交互的时间间隔比较小,不会出现长时间的卡顿现象。...CMS垃圾收集器 CMS收集器的主要目的是使垃圾回收造成的停顿时间最短,提高服务响应速度,使用标记清除算法,具有并发收集(用户线程与垃圾收集并发执行)、低停顿的特点。...,但可与用户程序并发执行 最终标记:修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录 筛选回收:对各个Region的回收价值和成本进行排序,根据用户所期望的GC停顿时间来制定回收计划...内存分配与回收策略 对象的内存分配主要是指在Java堆上的分配,通常会优先分配在新生代,然后经历一系列GC后仍然存活的对象会进入到老年代。

    76410

    Android:玩转垃圾回收机制与分代回收策略

    GC 回收机制与分代回收策略 垃圾回收(Garbage Collection,简写为 GC)可能是虚拟机众多知识点中最为大众所熟知的一个了,也是Java开发者最关注的一块知识点。...Java 语言开发者比 C 语言开发者幸福的地方就在于,我们不需要手动释放对象的内存,JVM 中的垃圾回收器(Garbage Collector)会为我们自动回收。...需要注意的是,被软引用对象关联的对象会自动被垃圾回收器回收,但是软引用对象本身也是一个对象,这些创建的软引用并不会自动被垃圾回收器回收掉。...尤其是对于从事 Android 开发的工程师来说,有时候垃圾回收会很大程度上影响 UI 线程,并造成界面卡顿现象。因此理解垃圾回收机制并学会分析 GC Log 也是一项必不可少的技能。...Android 虚拟机中对垃圾回收所做的优化。 本文转自 https://juejin.cn/post/6891589544161116168,如有侵权,请联系删除。

    1.5K30

    MariaDB 视图与触发器

    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成,视图是从一个或者多个表中导出的,视图的行为与表非常相似,...但视图是一个虚拟表.在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录,视图可以使用户操作方便,而且可以保障数据库系统的安全.触发器和存储过程一样,都是嵌入到...MySQL的一段程序,触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATAE和DELETE语句.如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象...,当表上出现特定事件时,将激活该对象.MariaDB 视图视图的含义:视图是一张虚拟表,是从数据库中一个或多个表中导出来的表,视图还可以从已经存在的视图基础上定义,视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份...,通过视图看到的数据只是存放在基本表中的数据.对视图的操作与对表的操作一样,可以对其进行查询、修改和删除.当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化.同时,若基本表的数据发生变化,

    1.4K10

    SpringMVC中用于绑定请求数据的注解以及配置视图解析器

    SpringMVC中用于绑定请求数据的注解 在上一篇文章中我们简单介绍了@RequestMapping与@RequestParam注解,知道了如何去配置地址映射,本篇则介绍一些用于处理request数据的注解...控制台打印结果: {one=1, three=3, tow=2} [4, 5, 6] [7, 8, 9] ---- 通过方法返回值转发到视图上 在SpringMVC中控制器只需要通过方法的返回值就可以转发到某个指定的视图上...---- 配置视图解析器 在以上的实验中,我们只把jsp文件放在了WEB-INF目录下,但是如果这个jsp文件是在很多级目录下,那么我们通过返回值来转发到jsp上时,需要写的路径就很长了。...-- 视图名称的后缀 --> 控制器代码: package org.zero01.test...,配置了视图解析器之后,我们只需要写个视图的名称就可以了,不需要去写全路径。

    86740

    SpringMVC入门与数据绑定

    SpringMVC与数据绑定 一.Spring MVC初体验 1.Spring MVC 介绍 2.Spring MVC简介 3.Spring 5.X 的版本变化 4.Spring MVC环境配置 IDEA...在MVC的设计理念中,如果视图中的比如某个表格中的数据来自于后端的model中,那并不是由视图主动地来通过java调用model中的某一个方法获取某一个数据,而是要通过控制器Controller,控制器...控制器是整个MVC中最重要的部分,他的用途就是接收视图中所传过入的数据,然后再根据数据调用后端的业务逻辑得到结果,最后再通过控制器将后端的结果返回到视图中。也就是指视图和模型之间没有必然的连接关系。...输入localhost:8888/t,成功打印SUCCESS 二.Spring MVC数据绑定 1.URL Mapping(URL映射) URL Mapping 指将URL与Controller方法绑定...所谓ModelAndView对象是指“模型(数据)与视图(界面)”对象,这个对象的作用呢就是将模型和视图进行绑定。通过ModelAndView对象可以将包含数据对象与模板引擎进行绑定。

    1.2K20

    JVM内存与垃圾回收篇第17章垃圾回收器

    第 17 章 垃圾回收器 1、GC 分类与性能指标 1.1、垃圾回收器概述与分类 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。...-XX:+PrintCommandLineFlags 程序打印输出:-XX:+UseParallelGC 表示使用使用 ParallelGC ,ParallelGC 默认和 Parallel Old 绑定使用...(CPU并行需要切换线程,串行可以省去切换线程的资源) 4.2、ParNew 与 Serial 比较 ParNew 回收器与 Serial 回收器效率比较 由于ParNew收集器基于并行回收,那么是否可以断定...由于不需要移动存活对象,所以这个阶段也是可以与用户线程同时并发的 6.3、CMS 特点与弊端分析 CMS 特点与弊端分析 尽管CMS收集器采用的是并发回收(非独占式),但是在其初始化标记和再次标记这两个阶段中仍然需要执行...---- 这是RedHat在2016年发表的论文数据,测试内容是使用ES对200GB的维基百科数据进行索引。

    56220
    领券