相信各位对Jetpack并不陌生,自从 Google 在 2018 年推出 Jetpack 之后,它就成为了 Android 未来发展的指向标。

作为一名安卓工程师,我们以前会经常吐槽Android碎片化严重,项目库都是用什么Square全家桶,Glide, 各种Bus, MVP,MVVM等等,而Jetpack就很好的解决了这个问题。

Jetpack是Google为解决Android开发碎片化,打造成熟健康生态圈提出的战略规划,是Google对Android未来提出的发展方向。众多Github开源库和各个大厂都在拥抱Jetpack,也是当今安卓面试必考的热点,因此,如果你想要去大厂做安卓,Jetpack也将是你必须要搞定的内容。

如何学习?

如果你是因为缺少学习资料,而我正好薅到这本阿里巴巴内部Jetpack宝典,从入门到精通,教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,是你学习Jetpack的葵花宝典。

Android Jetpack - Navigation

Navigation 直接翻译即为导航,它是 Android Jetpack 组件之一,让单 Activity 应用成为首选架构。应用内Fragment页面的跳转则由 Navigation 来处理,开发者无需在处理 FragmentTransaction 的复杂性以及相关的转场动画。

Android Jetpack - Data Binding

Data Binding 是一个支持库,它使用一种 声明的方式 代替 编码的方式,用来绑定 UI 控件和数据源。
通常我们会在 activity 里面调用 UI 框架层的方法声明 view。例如,下面的代码调用了 findViewById() 声明了一个 TextView 控件,并且把它和 viewModel 的 userName 属性进行了绑定:

findViewById(R.id.sample_text).apply {    text = viewModel.userName}

下面的代码展示了如何使用 Data Binding 在布局里面直接给 TextView 的 test 属性进行赋值。这么做的好处是不必再像上面的例子一样调用 Java 代码。注意在赋值表达式中使用的语法是 @{}:

在布局里面直接绑定 UI 控件,可以减少在 activity 中 UI 框架方法的调用,这使得代码更加简洁、更容易维护。它还可以提升 App 的性能,避免内存泄漏和空指针异常。

Android Jetpack - ViewModel & LiveData

ViewModel将视图和逻辑进行了分离。Activity或者Fragment只负责UI显示部分。具体的网络请求或者数据库操作则有ViewModel负责。类似于MVP模式中的Presenter层。ViewModel类旨在以注重生命周期的方式存储和管理界面相关的数据。让数据可在发生屏幕旋转等配置更改后继续留存。我们知道类似旋转屏幕等配置项改变会导致我们的 Activity 被销毁并重建,此时 Activity 持有的数据就会跟随着丢失,而ViewModel 则并不会被销毁,从而能够帮助我们在这个过程中保存数据。并且ViewModel不持有View层的实例,通过LiveDataActivity或者Fragment通讯,不用担心潜在的内存泄漏问题

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 ActivityFragmentService)的生命周期。这种感知能力可确保LiveData当数据源发生变化的时候,通知它的观察者更新UI界面。同时它只会通知处于Active状态的观察者更新界面,如果某个观察者的状态处于PausedDestroyed时那么它将不会收到通知。所以不用担心内存泄漏问题。

Android Jetpack - Room

Room是Jetpack组件库一员,属于ORM库,主要是对Sqlite做了一层抽象,从而简化开发者对数据库操作。Room支持编译时的语法检查,并且支持返回LiveData。

添加依赖

在app的build.gradle中添加如下依赖:

def room_version = "2.2.0-rc01"implementation "androidx.room:room-runtime:$room_version"// For Kotlin use kapt instead of annotationProcessor (注意这个注释)kapt "androidx.room:room-compiler:$room_version"

如果项目是使用Kotlin语言来开发的,在添加room-compiler的时候使用kapt关键字,java语言开发的就使用annotationProcessor关键。否则会导致访问出错。

Android Jetpack - Paging

很多应用程序从包含大量项目的数据源中获取数据,但一次只显示一小部分数据。加载应用程序中显示的数据可能很大并且代价高昂,因此要避免一次下载,创建或呈现太多数据。为了可以更轻松地在我们的应用程序中逐渐加载数据谷歌方法提供了这个组件,可以很容易地加载和现在的大数据集与我们的RecyclerView快速,无限滚动。它可以从本地存储,网络或两者加载分页数据,并且可以让我们自定义如何加载内容。它可以与Room,LiveData和RxJava一起使用。

Paging Libray分为三部分:DataSource, PagedList, PagedAdapter

Android Jetpack - WorkManger

WorkManager是Android Jetpack 中管理后台任务的组件。

常见的使用场景:1.向后端服务发送日志或分析数据 2.定期将应用数据与服务器同步

使用 WorkManager API 可以轻松地调度后台任务。可延迟运行(即不需要立即运行)并且在应用退出(进程未关闭)或应用重启时能够可靠运行的任务。

Android Jetpack架构组件之Lifecycle

为了应用的安全,经常会有从后台切回前台时进行软件确认等安全确认处理的需求。如果是以前的话,这个需求其实是挺难实现的。 但自从Google推出Lifecycle组件以后,这个需求就简单了很多。Lifecycle除了感知从后台切回前台以外, 利用这个组件可以更简单的实现复杂的处理生命周期的操作

Android Jetpack Compose 最全上手指南

Jetpack Compose 是一个用于构建原生Android UI 的现代化工具包,它基于声明式的编程模型,因此你可以简单地描述UI的外观,而Compose则负责其余的工作-当状态发生改变时,你的UI将自动更新。由于Compose基于Kotlin构建,因此可以与Java编程语言完全互操作,并且可以直接访问所有AndroidJetpack API。它与现有的UI工具包也是完全兼容的,因此你可以混合原来的View和现在新的View,并且从一开始就使用Material和动画进行设计。

结语

由于文章篇幅有限,仅展示一部分内容,此份笔记还包含 Android Jetpack架构组件–App Startup、Android Jetpack最新组件介绍、Android Jetpack项目实战(从0搭建Jetpack版的WanAndroid客户端)、项目实战等等。

朋友们如果有需要,可以【点击我】阅读下载。无偿分享给大家。

此外,还有一份Jetpack MVVM实战项目,附带源码+视频。

项目源码【点击我】获取。

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. 箭头函数的基础使用
  3. python起点网月票榜字体反爬案例
  4. NPM 和webpack 的基础使用
  5. Python list sort方法的具体使用
  6. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  7. Android通过http协议POST传输方式
  8. Android之SeekBar的简单使用
  9. 在Android中使用FFmpeg(android studio环境) 合成音频与视频

随机推荐

  1. LeakCanary:检测Android中的内存泄漏
  2. Android中使用Java代码动画改变背景颜色
  3. android窗体加载过程剖析之消息处理的注
  4. android代码执行adb shell终端命令(linux
  5. Android(安卓)一个简易的自定义软键盘
  6. 让JNI告诉你 你的应用为什么被卸载
  7. 用.Net打造一个移动客户端(Android/IOS)的
  8. Android沉浸式状态栏完全解析
  9. 把Android源代码加入SDK,就可以按F3查看类
  10. android单元测试中的多线程以及handler消