简介
在Android应用开发中,Fragment
和ViewModel
是两个非常重要的概念,它们分别属于架构组件库的一部分,旨在帮助开发者构建更加模块化、健壮且易维护的应用。
Fragment
Fragment
是Android系统提供的一种可重用的UI组件,它能够作为活动(Activity)的一部分,具有自己的生命周期,并且可以在多个Activity中使用。Fragment的设计初衷是为了支持更灵活的屏幕布局,特别是在需要适配不同屏幕尺寸和方向时。通过组合多个Fragment,开发者可以创建丰富的用户界面,并且每个Fragment都可以独立地处理用户输入、保存状态等,从而提高代码的复用性和模块化。
ViewModel
ViewModel
是Android架构组件库中的一个核心类,用于存储和管理UI相关的数据。它的主要目的是分离视图(View)和数据,使得数据能够在配置变更(如屏幕旋转)时保持,避免了因Activity或Fragment重建而导致的数据丢失问题。ViewModel的生命周期独立于UI控制器(Activity或Fragment),确保了数据的持久性。此外,ViewModel还可以与LiveData
等组件结合使用,实现数据变化的自动通知,简化了UI更新的逻辑。
Fragment与ViewModel的协同工作
在实际开发中,为了实现Fragment的数据持久化和解耦,通常会为Fragment关联一个ViewModel。这样做有以下几个好处:
-
数据共享:如果多个Fragment需要共享数据,可以将这些数据放在一个共享的ViewModel中。这样,即使Fragment被重建,数据仍然保持不变,而且Fragment之间可以直接访问这些共享数据,无需通过Activity传递。
-
生命周期解耦:ViewModel不依赖于UI组件的生命周期,因此即使Fragment销毁并重新创建(比如由于配置变更),ViewModel仍然存在,保证了数据的连续性。
-
简化数据管理:ViewModel负责数据的获取、存储和处理,而Fragment专注于展示数据和处理用户交互,这使得代码结构更加清晰,易于维护。
一、开启绑定Binding
Step 1: 打开build.gradle
(Module级别)文件。
Step 2: 在android
闭包内,确保buildFeatures
块存在,然后添加viewBinding
属性并设为true
。
buildFeatures:
android {
...
buildFeatures {
viewBinding = true // 注意,新版一定要有=
}
}
- 这是启用ViewBinding的推荐方式,特别是在较新的Android Gradle插件版本中。
buildFeatures
是一个集合了各种构建特性的开关,通过在这里设置viewBinding
为true
,你告诉Gradle在构建时生成ViewBinding类。这些类让你能够以类型安全的方式访问XML布局中的视图,无需手动调用findViewById
。
dataBinding:
android {
...
dataBinding {
enabled = true // 注意,新版一定要有=
}
}
- 类似地,这是启用DataBinding的方式。通过在
dataBinding
块内设置enabled
为true
,你激活了DataBinding特性。DataBinding比ViewBinding更进一步,提供了数据和视图之间的双向绑定能力,允许在布局文件中直接使用数据对象,并支持表达式来处理数据变化,实现更复杂的UI逻辑。
viewBinding:
android {
...
viewBinding {
enabled = true // 注意,新版一定要有=
}
}
正确的配置应该遵循上述第一条提到的buildFeatures { viewB