前言
目前市面上流行的客户端app的架构基本都是基于MVVM 设计的,其实就是为了去更好的使用jetpack 组件,mvvm配合jetpack 去搭建的话,不仅仅在业务上达到了解耦、方便维护和review的效果,如果配合lifeCycle 的使用,更能有效的减少对象生命周期的控制问题导致的内存泄漏。
Android Jetpack分类
-
Architecture(架构组件)
Architecture指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解
DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用
Lifecycle:用于管理Activity和Fragment的生命周期,可帮助开发者生成更易于维护的轻量级代码
LiveData:在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规observable不同,LiveData是生命周期感知的
Navigation:处理应用内导航
Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用
Room:友好、流畅的访问SQLite数据库。它在SQLite的基础上提供了一个抽象层,允许更强大的数据库访问
ViewModel:以生命周期的方式管理界面相关的数据,通常和DataBinding配合使用,为开发者实现MVVM架构提供了强有力的支持
WorkManager:管理Android的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务
-
Foundationy(基础组件)
基础组件提供横向功能,例如向后兼容性、测试、安全、Kotlin 语言支持,并包括多个多个平台开发的组件Android KTX:优化了供Kotlin使用的Jetpack和Android平台API。帮助开发者以更简洁、更愉悦、更惯用的方式使用Kotlin进行Android开发
AppCompat:帮助较低版本的Android系统进行兼容
Auto:开发Android Auto应用的组件,提供了适用于所有车辆的标准化界面和用户交互
检测:从AndroidStudio中快速检测基于Kotlin或Java的代码
多Dex处理:为具有多个Dex文件应用提供支持
安全:安全的读写加密文件和共享偏好设置
测试:用于单元和运行时界面测试的Android 测试框架
TV:构建可让用户在大屏幕上体验沉浸式内容的应用
Wear OS:开发Wear应用的组件
-
Behavior(行为组件)
行为组件可帮助开发者的应用与标准Android服务(如通知、权限、分享)相集成CameraX:帮助开发简化相机应用的开发工作。它提供一致且易于使用的界面,适用于大多数Android;设备,并可向后兼容至Android 5.0(API 21)
DownloadManager:处理长时间运行的HTTP下载的系统服务
媒体和播放:用于媒体播放和路由(包括Google Cast)的向后兼容API
通知:提供向后兼容的通知API,支持Wear和Auto
权限:用于检查和请求应用权限的兼容性API
设置:创建交互式设置,建议使用AndroidX Preference Library库将用户可配置设置集成到应用中
分享操作:可以更轻松地实现友好的用户分享操作
切片:切片是一种UI模板,创建可在应用外部显示应用数据的灵活界面元素
-
UI(界面组件)
Animation and Transition:该框架包含用于常见效果的内置动画,并允许开发者创建自定义动画和生命周期回调Emoji Compatibility:即便用户没有更新Android系统也可以获取最新的表情符号
Fragment:组件化界面的基本单位
布局:用XML中声明UI元素或者在代码中实例化UI元素
调色板:从调色板中提取出有用的信息
mvvm 图解
谷歌 Android 团队 Jetpack 视图模型
-
ViewModel:负责管理数据的抽象类,通过ViewBinding 中的setVariable 方法绑定绑定到View层 进行页面更新。
ViewModel 的生命周期会从创建绑定到Activity/Fragment 中开始 一直到Activity/Fragment 的onDestroy 结束,所以,不需要担心数据在使用过程中丢失。 - Model:负责业务逻辑处理,如网络请求、数据库、耗时等操作,通常model 层会和ViewModel 使用同一个类进行封装处理,这样的好处在与,当model中的数据处理完毕拿到结果时,可以通知ViewModel 中需要更新的变量进行更新,再者ViewModel 会通知View 刷新更改页面的值。
- View:负责页面展示,在Activity\Fragment 创建时,通过binding.setVariable()的方式 将ViewModel 绑定到页面布局中。从而打到双向绑定的效果。
- DataBinding:以声明方式将可观察数据绑定到界面元素,通常和ViewModel配合使用。
DataBinding使用
1.在build.gradle中进行简单的配置即可
android {
compileSdk 32
defaultConfig {
applicationId "com.yoka.jetpackdemo"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
dataBinding = true
}
}
2.将现有布局转换为databinding布局
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
首先需要使用上述方式开启databinding功能。然后在布局的中使用快捷键Alt+Enter