遇到问题
每次在创建或重新创建视图后使用findViewById()函数来获取对它的引用时,Android 系统都会在运行时遍历视图层次结构来查找它。当您的应用只有少数视图时,这不是问题。然而,生产应用程序可能在一个布局中有几十个视图,即使有最好的设计,也会有嵌套的视图。
考虑一个包含滚动视图的线性布局,该滚动视图包含一个文本视图。对于较大或较深的视图层次结构,查找视图可能需要足够的时间,从而明显降低用户的应用程序速度。在变量中缓存视图会有所帮助,但您仍然必须在每个命名空间中为每个视图初始化一个变量。有了很多视图(View)和多个活动(Activity),这些都累加在一起,这样会导致增加重复代码,降低项目可维护性,即所有开发人员的技术痛点。
技术方案
创建一个包含对每个视图的引用的对象。这个对象,称为Binding对象,可以被你的整个应用程序使用。这种技术称为「数据绑定」。为您的应用创建绑定对象后,您可以通过绑定对象访问视图和其他数据,而无需遍历视图层次结构或搜索数据。
数据绑定有以下好处:
- 与使用findViewById()的代码相比,代码更短、更易于阅读和维护。
- 数据和视图明显分开。
- Android系统只需遍历视图层次结构一次就可以获得每个视图,这种情况发生在应用程序启动期间,而不是在用户与应用程序交互的运行时。
- 您可以获得访问视图的类型安全性。(类型安全意味着编译器
版权声明:本文为qq_29901385原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。