您的位置:

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组件库

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()

四、jetpack组件一共几个

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

五、jetpack组件支持mvvm架构

Jetpack设计之初便考虑到了MVVM框架,为了更好的实现MVVM架构,Jetpack中提供了ViewModel和LiveData这两个主要组件。

六、android jetpack组件

Jetpack是Android支持库的一部分,但和Androidx不同的是,Jetpack是为解决Android应用开发中常见的问题而设计的。Jetpack包含一组库,涵盖了Android应用程序开发过程中的各个方面。

七、jetpackui框架

Jetpack UI框架是Jetpack中UI类组件的集合,包括了一些高扩展的UI组件库,比如Navigation,ViewPager2等等。

1. Navigation

Navigation是一个用于应用程序中不同屏幕之间导航的库,处理了通用的Android导航困境。与传统的Intent方式不同,Navigation组件将导航结构更好地组织在一个目标、动作和导航图中。



   
    
    
    
    
    

   

2. ViewPager2

ViewPager2是以前ViewPager的升级版,有着更好的性能和便利性,特别是在视图重新生成方面。和原来不同的是,ViewPager2使用RecyclerView作为背后的实现,使得通过RecyclerView.Adapter和RecyclerView.LayoutManager对它的控制更加透明。


class MyAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) {

    private val colors: Array
    = fragment.resources.getIntArray(R.array.colors).toTypedArray()

    override fun getItemCount(): Int = colors.size

    override fun createFragment(position: Int): Fragment =
        ColorFragment.newInstance(colors[position])
}

   

3. Compose

Jetpack Compose是一套全新的UI工具包,通过预览何时将UI呈现到设备上的交互式实时预览来简化原生Android UI开发。与传统的编程方式(如XML布局和Kotlin代码)不同,Compose是一种声明式的方式。


@Composable
fun MyApp() {
    MaterialTheme {
        Column {
            Text("Hello")
            Text("World")
        }
    }
}