Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些

Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分,而不会受到Android平台特定的限制。Jetpack组件可分为四个类别:

  • 架构组件(Architecture Components)
  • UI组件(UI Components)
  • 行为组件(Behavior Components)
  • 基础组件(Foundation Components)

架构组件包括Room, LiveData, ViewModel和Data Binding。UI组件包括RecyclerView、Paging、Navigation等等。行为组件包括WorkManager和Notifications。基础组件包括AppCompat、Multidex、Test、安全等等。

jetpack常用组件

1. Room

Room 是一个 SQLite 对象映射库,让您能够在应用中使用数据库,同时充分利用 LiveData、ViewModel 和协程等现代化库。

复制代码
@Entity
data class User(
    @PrimaryKey val uid: Int,
    @ColumnInfo(name = "first_name") val firstName: String?,
    @ColumnInfo(name = "last_name") val lastName: String?
)

2. LiveData

LiveData是一个生命周期感知的可观察数据存储器类,可帮助您构建响应式,健壮和可测试的界面。LiveData经常与ViewModel一起使用,使数据更新后可以自动更新UI。

复制代码
val mutableLiveData = MutableLiveData("Hello World")
mutableLiveData.observe(this, Observer { s -> text_view.text = s })

3. ViewModel

ViewModel是一个专门为UI层开发的类,通过保存数据的方式,解决了UI层重建,数据丢失的问题。ViewModel可以确保当配置更改、活动终止并重新创建时,数据会立即恢复。

复制代码
class MyViewModel : ViewModel() {
    private val users: MutableLiveData> by lazy {
        MutableLiveData>().also {
            loadUsers()
        }
    }

    fun getUsers(): LiveData> {
        return users
    }

    private fun loadUsers() {
        // Do an asynchronous operation to fetch users.
    }
}

4. Data Binding

数据绑定库(Data Binding Library)可以让您以声明方式将可观察对象绑定到界面元素。它的出现,让每一个具有一定业务逻辑的界面都可以得到简化,以减少代码的编写以及针对Eclipse, ADT 和 Android Studio 等不同工具,提供了最方便的开发环境的支持工具。

Jetpack 的存在意义

1、提高开发效率

  • Jetpack 提供了 大量 现成 的 组件 和 工具 , 可以快速 构建 高质量 / 高性能 的 Android 工程 , 并且可以 提高 代码的 稳定性 , 可维护性 ;
  • 使用 Jetpack 库 , 减少了很多 重复性的 代码工作 , 提高了开发效率 ;

2、最佳架构方案

  • Jetpack 是 Google 推荐的最佳的架构方案 , 一直在 不断更新 , 并且 兼容之前的 Android 系统版本 ;
  • 使用 Jetpack 可以减少 架构带来 内存泄漏 和 崩溃 ;

3、消除样本代码

  • 使用 Jetpack 开发套件 , 可以轻松进行 工程架构 , 减少不必要的 架构相关的样板代码 , 开发者只需要专心开发自己的逻辑代码即可 ;
  • Jetpack 提供了一套 UI , 行为 , 架构 相关的解决方案 , 开发者可以不用再架构上浪费时间 , 专心开发自己的逻辑 ;
  • 样板代码示例 : Activity 中管理各种生命周期 ;

4、设备系统兼容性

  • 开发 Android 应用 , 需要 考虑到 Android 的各个版本的特性 , 以及 各个 Android 手机厂商的适配问题 , 需要花费大量的时间精力进行适配工作 ;
  • 使用 Jetpack 可以保证 在 各个 Android 版本 , 各种 Android 设备中 , 保持运行一致 , 可以降低 测试 , 适配 的 工作量 ;
  • Jetpack 自带设备系统兼容性解决方案 ;

5、改善应用性能

  • 使用 Jetpack 提供的 一系列的 组件 和 工具 , 可以
  • 提高 应用的 性能 ,
  • 提高 代码稳定性 ,
  • 提高 代码可维护性 ,
  • 减少应用崩溃 ,
  • 减少应用内存泄漏 ;

6、测试支持

  • Jetpack 提供了一系列的 测试组件 ,
  • 借助 Espresso , UI Automator , JUnit 测试组件 ,
  • 可以快速 创建 Android 自动化测试 功能 ,
  • 提高 程序的 质量 , 提高代码的稳定性 ;

jetpack组件库

Jetpack还有一些组件库,比如Hilt, WorkManager, CameraX和Compose等等。

1. Hilt

Hilt是Android的依赖注入库,用于定义应用程序中的类之间的依赖关系。它简化了和Dagger2一样的依赖注入过程,并简化了注入实例的进程。

复制代码
@InstallIn(SingletonComponent::class)
@Module
class MyModule {
    @Provides
    fun provideFoo(): Foo = Foo() 
}

class Foo @Inject constructor()

2. WorkManager

WorkManager是一个API,它让您能够安排后台任务,即使应用已经退出或设备已经重启。有了WorkManager,您可以针对应用使用情况定义灵活且轻量化的任务,并确保在设备单独的线程上以可靠、一致的方式运行。

复制代码
val uploadWorkRequest = OneTimeWorkRequestBuilder().build()
WorkManager
    .getInstance(context)
    .enqueue(uploadWorkRequest)

3. CameraX

CameraX是一组相机API,可让您轻松访问设备的摄像头。它有着简单易用的API,便于开发者使用。CameraX 支持多种设备,版本兼容,可读性高。

复制代码
val preview = Preview.Builder().build()
val analysisUseCase = ImageAnalysis.Builder().build()
val imageCapture = ImageCapture.Builder()
    .setTargetRotation(previewView.display.rotation)
    .build()

本文就主要讲解了,在Android Jetpack中的组件有哪些,常用的组件介绍,更多Android Jetpack的学习可以参考《Android Jetpack笔记》点击就可以查看详细的类目板块,也可以拿取。

結尾

到目前为止,Jetpack包含80多个库的组件。每个库都是专为 Android 开发而设计的,涵盖了各种开发过程中的各个方面。

相关推荐
小天源2 小时前
银河麒麟 V10(x86_64)离线安装 MySQL 8.0
android·mysql·adb·麒麟v10
2501_915921432 小时前
傻瓜式 HTTPS 抓包,简单抓取iOS设备数据
android·网络协议·ios·小程序·https·uni-app·iphone
csj504 小时前
安卓基础之《(20)—高级控件(2)列表类视图》
android
JMchen1234 小时前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
恋猫de小郭5 小时前
Flutter 在 Android 出现随机字体裁剪?其实是图层合并时的边界计算问题
android·flutter·ios
2501_915918415 小时前
把 iOS 性能监控融入日常开发与测试流程的做法
android·ios·小程序·https·uni-app·iphone·webview
benjiangliu7 小时前
LINUX系统-09-程序地址空间
android·java·linux
独自破碎E7 小时前
字符串相乘
android·java·jvm
DokiDoki之父7 小时前
边写软件边学kotlin(一):Kotlin语法初认识:
android·开发语言·kotlin
REDcker7 小时前
Telegram Android 源码解析完整文档
android