乐趣区

关于android:阿里巴巴内部Jetpack宝典意外流出极致经典堪称Android架构组件的天花板

简介

Jetpack 是一套库、工具和指南,能够帮忙开发者更轻松地编写优质利用。这些组件能够帮忙开发者遵循最佳做法、让开发者解脱编写样板代码的工作并简化简单工作,以便开发者将精力集中放在所需的代码上。

Android Jetpack 组件的作用是什么?

  • Navigation:一个用于治理 Fragment 切换的工具类,可视化、可绑定控件、反对动画等是其长处。
  • Data Binding:不用说,都晓得,减速 MVVM 的创立。
  • Lifecycle:他是咱们可能解决 Activity 和 Fragment 的生命周期的重要起因,在 AndroidX 的 Fragment 和 Activity 曾经对 Lifecycle 提供了默认反对。
  • ViewModel:当做 MVVM 的 ViewModel 层,并具备申明周期意识的解决和 UI 相干的数据。
  • LiveData:同 RxJava 的作用一样,对数据进行监听,长处就是无需解决生命周期、无内存透露等。
  • Room:弱小的 ORM 数据库框架。
  • Paging:易于应用的数据分页库,反对 RecyclerView。WorkManager:灵便、简略、提早和保障执行的后台任务解决库。

你可能抉择 Android Jetpack 的起因

以下可能是你会抉择 Android Jetpack 的起因:

  • 一起应用更不便:因为 Android Jetpack 组件中的很多库都对其余库提供了反对,比方 Room 和 Paging 就对 LiveData 提供了反对。
  • 向后兼容:基本上每个组件都对低版本提供了反对。
  • 反对 RxJava:因为 RxJava 弱小的生态环境,简直和数据相干的组件都对 RxJava 提供了反对。
  • 缩小代码量:以 Data Binding + ViewModel + LiveData 或 RxJava 构建的 MVVM 模式可能显著缩小代码量,比拟平时应用的 MVP 模式也会更加不便,无需被动更新 UI。
  • 无需捆绑:Android Jetpack 系列组件能够无需捆绑应用,你如果只想用外面的单个库,那么就能够仅仅依赖一个库。

Android Jetpack 要学吗?

学,必定要学,Android Jetpack 于谷歌而言,这是他们重新整理和对立安卓生态环境信心的体现,Android Jetpack 所展示的内容,也是谷歌想拓展和保护的方向。于长期苦恼于第三方库抉择的宽广 Android 开发者而言,这是谷歌为咱们提供的一盏明灯。

兴许,Android Jetpack 系列的局部库还没成熟到成为你工作的第一抉择,然而,深刻学习 Android 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<TextView>(R.id.sample_text).apply {text = viewModel.userName}

上面的代码展现了如何应用 Data Binding 在布局外面间接给 TextView 的 test 属性进行赋值。这么做的益处是不用再像下面的例子一样调用 Java 代码。留神在赋值表达式中应用的语法是 @{}:

<TextView
    android:text="@{viewmodel.userName}" />

在布局外面间接绑定 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 客户端)、我的项目实战等等。

敌人们如果有须要,能够我的【Github】浏览下载.

点击我收费获取

退出移动版