生命周期管理库 (Lifecycles) 由三个组件构成,包括 Lifecycle、LiveData 和 ViewModel。它可以用来解决常见的生命周期问题,同时使您的应用程序易于测试且可维护。
ViewModel 用于提供和管理 UI 界面的数据。通过使用 ViewModel,开发者可以方便的将 UI 界面和数据逻辑剥离开来,从而达到 UI 界面 Activity 和 Fragment 负责显示数据和处理用户操作;
ViewModel 则负责提供和管理 UI 界面的数据,并且负责和数据层通讯的效果。
与此同时,也让您在开发过程中更好地遵循单一职责的设计原则。
此外,ViewModel 的另一大特点是它不会因为配置变更而销毁。作为 UI 数据的持有者,在 activity/fragment 重建时 ViewModel 中的数据不受影响,同时可以避免内存泄漏
可以通过 ViewModel 来进行 activity 和 fragment ,fragment 和 fragment 之间的通信,无需关心通信的对方是否存在,使用 application 范围的 ViewModel 可以进行全局通信
架构组件的官方开发者文档:
https://developer.android.google.cn/arch
ViewModel 的文档:
https://developer.android.google.cn/topic/libraries/architecture/viewmodel.html
应用程序架构指南:
https://developer.android.google.cn/jetpack/docs/guide使用生命周期管理库的架构组件实例
Kotlin:
https://github.com/android/architecture-samples/tree/dev-todo-mvvm-live-kotlin
架构组件实例:
https://github.com/android/architecture-components-samples
ViewModelFactory 实例:
https://github.com/android/architecture-samples/blob/dev-todo-mvvm-live/todoapp/app/src/main/java/com/example/android/architecture/blueprints/todoapp/ViewModelFactory.java