美文网首页安卓Android-Data BindingAndroid Databinding
Android Databinding技术由浅入深(1)----

Android Databinding技术由浅入深(1)----

作者: 蘅芜猿 | 来源:发表于2017-07-27 11:55 被阅读264次

本文参照Data Binding Library - Android Developers 谷歌官方

从今天开始将为大家由浅入深(PS:希望不是从入门到放弃)的讲一下谷歌在安卓平台上的数据绑定框架:Databinding

前言:

2015年谷歌I/O大会上就介绍了一个框架DataBinding,堪称解决界面逻辑的黑科技,但是使用率非常少,研究的人更少,那这是不是一个优秀的框架呢,是不是对项目有用呢,接下来的几天我将带大家深入研究一下。

这篇文章不说技术,只了解一下DataBinding。

一、数据绑定是什么?

几年前,数据绑定便已在前端世界中风生水起,Angular.js、React.js、vue.js等热门前端框架都具备这种能力。

数据绑定简单来说,就是通过某种机制,把代码中的数据和xml(UI)绑定起来,双方都能对数据进行操作,并且在数据发生变化的时候,自动刷新数据。

二、数据绑定怎么用?

数据绑定分为单向绑定双向绑定两种方式。

单向绑定就是说数据的流向是单方面的,只能从代码流向UI;

双向绑定的数据流向是双向的,当业务代码中的数据改变时,UI上的数据能够得到刷新;当用户通过UI交互编辑了数据时,数据的变化也能自动的更新到业务代码中的数据上。

单向数据绑定和双向数据绑定示例

三、DataBinding这门技术有什么优点呢?

1.性能很好,因为它0反射,而且性能比直接findViewById要高。后面的文章将会从源码角度介绍。

2.谷歌原生支持(相比与其他第三方的数据绑定框架比如Android-databinding和RoboBinding),可以说是亲儿子,有自家IDE支持。

3.将MVP框架变成MVVM框架,代码更简洁,逻辑更清晰。

4.减少代码线程切换更新UI(列表除外),除了要在列表中考虑线程问题。

5.自动检查空指针,也不用担心空指针。

四、DataBinding这门技术一直不温不火,为什么呢?

根据我的使用感受是这么几条:

1.不太成熟,当然并不是说技术不成熟,只是Android Studio的IDE对xml编写时还是不太友好;代码自动补全功能做得还是有点差;另外如果 XML 中有编辑错误,在 Build 的时的提示会很莫名其妙,很难排查到问题。这几个小问题有待Google日后的改善。

2.使用局限,在使用过程中发现它与某些技术冲突,比如插件化技术、热修复技术,如果想用Databinding还需要另外增加开发成本来配合它。

3.学习成本,其实我认为这个并不算一条,因为做我们这行学什么没有成本呢,是吧。

回答完上面几个问题,那我们看DataBinding解决了哪几个痛点会被称为解决界面逻辑的黑科技的呢?(咳咳,划重点了)

- 需要多次使用findViewById,损害了应用性能且令人厌烦

- 更新UI数据需切换至UI线程,将数据分解映射到各个view比较麻烦

-自动检查空指针,例如 android:text="@{user.lastName}" ,如果user为空,程序不会崩溃,只是显示空值。

Data Binding 解决了 Android UI 编程中的这几个痛点,官方原生支持 MVVM 模型可以让我们在不改变既有代码框架的前提下,非常容易地使用这些新特性。其实在此之前,已经有些第三方的框架(RoboAndroid) 可以支持 MVVM 模型,无耐由于框架的侵入性太强,导致一直没有流行起来。

说了这么多,有没有跃跃欲试呢?

现在Android Studio 2.0已经发布了,对data binding的支持又更进了一步!

做技术的,不要畏首畏尾,要乐于尝试新的技术。

学习目录

1.Android Databinding技术由浅入深(1)------Databinding的介绍

2.Android Databinding技术由浅入深(2)------Databinding的简单使用

3.Android Databinding技术由浅入深(3)------Databinding的源码解析

4.Android Databinding技术由浅入深(4)------Databinding进阶MVVM全框架

相关文章

网友评论

  • 0f1d692653ae:楼主二三四呢?
    蘅芜猿:@不败顽童_苗 https://www.jianshu.com/p/f75bebc0e4df 已更新
    0f1d692653ae: @不败顽童_苗 嗯呢,已经收藏了。。。
    蘅芜猿: @不败顽童_苗 稍后奉上 关注哦

本文标题:Android Databinding技术由浅入深(1)----

本文链接:https://www.haomeiwen.com/subject/oanakxtx.html