常见的Android Jetpack库会有哪些?这些库中又有哪些常用类的?

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:观察者接口,用于接收数据更新。

  • 作用:处理应用内导航、传递参数、处理返回栈以及深层链接(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 的组合上,这是目前官方最推崇的架构模式。

相关推荐
钛态5 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码20355 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
左手厨刀右手茼蒿5 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos
代码飞天5 小时前
wireshark的高级使用
android·java·wireshark
2501_915918416 小时前
苹果App Store上架审核卡住原因分析与解决方案指南
android·ios·小程序·https·uni-app·iphone·webview
skiy6 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
小小小点7 小时前
Android四大常用布局详解与实战
android
MinQ8 小时前
binder和socket区别及原理
android
Ehtan_Zheng8 小时前
Jetpack Compose 中绘制发光边框的多种方式
android