Jetpack组件(二)不推荐使用的DataBinding
创始人
2024-03-03 21:46:20
0

    一直在犹豫去写Jetpack组件的一系列文章,实话实说,我本身的项目中也很少有使用到Jetpack的一些库。那么在写文章之前,我还是要去实际的写demo。准备按照Architecture(架构)、Foundation(基础)、Behavior(行为)和UI(界面)的顺序去写。但没想到,Architecture的第一个库DataBinding,我在写了一点代码后,发现在实际的企业级项目中,使用DataBinding可能不太合适。所以,本篇主要是劝退你使用DataBinding。

    我简单看了一些文章,简单尝试写了写,我发现在xml布局简单且数据源相对固定的情况下,DataBinding存在一定的优势。大体如下使用:

(1)build.gradle 文件中的 android 节点里添加 dataBinding 配置

(2)xml里面增加标签

(3)获取ViewDataBinding对象

(4)绑定数据

但是问题也比较明显:

(1)如果xml布局比较复杂,或者在后续的迭代中引入了新的布局元素,新的数据源和数据更新逻辑,那么真的会很头疼。

(2)需要修改xml的结构,在xml外部嵌套一个标签,并且需要手动build才能生成DataBinding相关类等。

(3)外国网友总结的更多的缺点:https://medium.com/@hellotimmutton/an-argument-against-data-binding-13e2aaf7a9b1

    基于以上的一些问题,它确实不如另外一个比较成熟的方案:ButterKnifeGitHub - JakeWharton/butterknife: Bind Android views and callbacks to fields and methods.

通过注解@BindView实现findViewById的效果,大大省去了findViewById的代码,如下所示:

public class MainActivity extends AppCompatActivity {@BindView(R.id.text_view)TextView mTextView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);}}

    但是,随着Android组件化开发的成熟,ButterKnife也暴露出了问题:在Android项目的library模块中,生成R类中的成员变量就已经改为了非final修饰,这一改变直接致使ButterKnife无法在Android项目的library模块中使用,为了能够让ButterKnife运行在library模块,ButterKnife的作者通过生成R2类让ButterKnife在library模块中继续使用,虽然这样也能使用,但是也带来了很多其他的问题,每个library模块会存在两个R文件,R2的id还会经常找不到等等,最后作者也不得不发出声明,此工具以被弃用,功能开发和一般错误也会停止维护。

   那么,有没有比较好的方案?ViewBinding可能是最佳的选择了。ViewBinding是Google在2019年I/O大会上公布的一款Android视图绑定工具。它的使用方式有点类似DataBinding,但相比DataBinding,ViewBinding是一个更轻量级、更纯粹的findViewById的替代方案。

相关内容

热门资讯

党建擎旗三十载,广州律师以“四... 红色,始终是广州律师行业最鲜明的底色。 自1995年广州市律师协会党总支成立,广州律师行业党建已走过...
快手称遭黑灰产攻击出现涉黄内容... 极目新闻记者 郭奕 12月22日晚,不少网友反映快手直播间出现大量色情内容,包括播放淫秽影片、主播擦...
2025年“法规体检”发现纠正... 12月22日,全国人大常委会法工委关于2025年备案审查工作情况的报告提请全国人大常委会会议审议。在...
政策“扶上马” 青春“创未来” 青年逐梦正当时,创业建功新时代。南宁市将高校毕业生创业扶持作为促进高质量充分就业的关键抓手,以“真金...
准确把握高职资源下沉政策精髓 《教育强国建设规划纲要(2024—2035年)》明确提出“推动有条件地区将高等职业教育资源下沉到市县...
双阳法院“苔花工程”太平联合工... 广大农民朋友们,关于土地的相关法律知识,你知道多少?你知道土地的哪些合法权益是受法律保护的?倘若你也...
减负超600亿元,我国将推动长... 2025年全国长期护理保险高质量发展大会昨天在浙江宁波举行。记者从大会上了解到,我国自2016年开展...
《纽约时报》记者就AI训练侵犯... 12月23日消息,据路透社报道,一位因揭露硅谷血液检测初创公司Theranos的欺诈行为而闻名的调查...
亿达中国面临6.12亿元债务清... 观点网讯:12月22日,亿达中国发布内幕消息,涉及诉讼公告。 此前,亿达中国附属公司荣泰公司、郑州亿...
以技术化、制度化、法治化提升公... □江秋伟 党的二十届四中全会提出,推进国家安全体系和能力现代化,建设更高水平平安中国。近年来,美国等...