Android Jetpack 是 Google 推出的一套库、工具和指南的集合,旨在帮助开发者遵循最佳做法、减少样板代码并编写可在不同 Android 版本和设备中一致运行的代码。
目前 Jetpack 包含了众多库,按照功能主要可以分为架构(Architecture) 、UI与视图(UI/Compose) 、**数据处理(Data)和后台与行为(Behavior)**等类别。
以下是常见的 Jetpack 库及其最常用的核心类/接口/注解:
一、 架构类(Architecture Components)
这是 Jetpack 中最核心、使用最广泛的部分,主要用于设计健壮、可测试的现代应用架构(MVVM/MVI)。
1. ViewModel
-
作用:以注重生命周期的方式存储和管理界面相关的数据,确保数据在屏幕旋转等配置更改后能够存活。
-
常用类:
-
ViewModel:基础视图模型类。
-
AndroidViewModel:包含 Application 上下文的 ViewModel。
-
2. Lifecycle
-
作用:管理和感知 Activity 或 Fragment 的生命周期状态。
-
常用类/接口:
-
LifecycleOwner:具有生命周期的组件(如 Activity/Fragment 默认实现)。
-
LifecycleObserver / DefaultLifecycleObserver:用于监听生命周期事件的接口。
-
Lifecycle:保存组件生命周期状态(如 RESUMED, DESTROYED)的核心类。
-
3. LiveData(现代开发中常与 Kotlin Flow 结合或被替代)
-
作用:一种可观察的数据存储器类,具有生命周期感知能力。
-
常用类:
-
LiveData:只读的可观察数据。
-
MutableLiveData:可读写修改的可观察数据。
-
MediatorLiveData:可以观察其他 LiveData 对象并对其事件做出反应的类。
-
Observer:观察者接口,用于接收数据更新。
-
4. Navigation
-
作用:处理应用内导航、传递参数、处理返回栈以及深层链接(Deep Links)。
-
常用类:
-
NavController:管理应用导航的核心控制类。
-
NavHostFragment:XML中用于承载导航页面的容器。
-
NavDirections:由 Safe Args 插件生成的类,用于类型安全的参数传递。
-
二、 数据与状态存储(Data & Persistence)
1. Room
-
作用:在 SQLite 之上提供了一个抽象层,用于流畅地访问本地数据库。
-
常用类/注解:
-
@Database, @Entity, @Dao:Room的三大核心注解(分别标记数据库、表实体、数据访问对象)。
-
RoomDatabase:数据库的底层基类。
-
Room:用于创建/构建数据库实例的实用工具类。
-
2. DataStore
-
作用:用于替代 SharedPreferences 的数据存储解决方案,支持异步(基于协程/Flow)且类型安全。
-
常用类:
-
DataStore<Preferences>:Preferences DataStore 实例。
-
Preferences / MutablePreferences:键值对配置对象。
-
stringPreferencesKey(), intPreferencesKey() 等:用于定义类型安全的键。
-
3. Paging (Paging 3)
-
作用:用于一次加载和显示一小块数据(分页),减少网络和内存消耗。
-
常用类:
-
PagingSource:定义数据源和如何获取数据(网络或本地)。
-
Pager:根据配置(PagingConfig)触发数据流的类。
-
PagingData:分页数据的容器。
-
PagingDataAdapter:与 RecyclerView 结合使用的专用 Adapter。
-
三、 界面与 UI(UI & View)
1. Jetpack Compose
-
作用:Android 现代声明式 UI 工具包,完全使用 Kotlin 编写,替代传统的 XML 布局。
-
常用类/函数:
-
@Composable:标记函数为可组合 UI 函数。
-
Modifier:用于修饰和控制 UI 元素的外观、布局和行为。
-
Column, Row, Box:核心的布局容器。
-
Text, Button, Image:基础 UI 组件。
-
remember, mutableStateOf:用于在 Compose 中保存和触发重组的状态对象。
-
2. Fragment
-
作用:传统的应用界面可重用模块。
-
常用类:
-
Fragment:基类。
-
FragmentManager / childFragmentManager:管理 Fragment 事务的类。
-
FragmentTransaction:用于执行添加、替换、移除等操作。
-
3. RecyclerView(虽然很早就有,但也归类在Jetpack中)
-
作用:高效显示大数据集列表。
-
常用类:
-
RecyclerView:核心视图。
-
RecyclerView.Adapter:提供数据的适配器。
-
RecyclerView.ViewHolder:视图的持有者缓存。
-
DiffUtil / ListAdapter:用于高效比对数据差异并刷新列表的工具。
-
四、 后台任务与行为(Background & Behavior)
1. WorkManager
-
作用:用于管理需要保证能够执行的后台任务(即使应用退出或设备重启)。
-
常用类:
-
WorkManager:管理和调度任务的核心单例类。
-
Worker / CoroutineWorker:开发者实现后台逻辑的基类。
-
OneTimeWorkRequest / PeriodicWorkRequest:单次或周期性的工作请求配置。
-
Constraints:定义任务运行的约束条件(如需要 WiFi、需要充电等)。
-
2. CameraX
-
作用:简化相机应用的开发,兼容各种生命周期,处理设备碎片化问题。
-
常用类:
-
ProcessCameraProvider:相机提供者,用于绑定相机生命周期。
-
Preview:相机预览用例。
-
ImageCapture:拍照用例。
-
ImageAnalysis:图像分析用例(如二维码扫描、机器学习识别)。
-
五、 其他重要扩展库
1. Hilt (Dependency Injection)
-
作用:基于 Dagger 构建的依赖注入库,专为 Android 设计,大幅简化 DI 配置。
-
常用注解:
-
@HiltAndroidApp:标记 Application 类,触发代码生成。
-
@AndroidEntryPoint:标记 Activity/Fragment 等组件,使其可以接收注入。
-
@Inject:请求依赖或标记构造函数。
-
@Module, @InstallIn:定义依赖提供者和其存活的作用域。
-
@HiltViewModel:专门用于 ViewModel 的注入标记。
-
2. App Startup
-
作用:在应用启动时简化、高效地初始化组件(替代之前用空 ContentProvider 初始化的黑科技)。
-
常用类/接口:
-
Initializer<T>:定义单个组件的初始化逻辑及其依赖项。
-
AppInitializer:手动触发初始化的管理器。
-
总结建议:
如果你正在学习现代 Android 开发(MAD - Modern Android Development),建议将重点放在 ViewModel + Flow (替代LiveData) + Room + Jetpack Compose + Hilt + WorkManager 的组合上,这是目前官方最推崇的架构模式。