序言

Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作

根据官方的定义其实能够提炼出两个核心点:

1、它是一套组件库(说明它是由许多个不一样的组件库构成,并非一个单一的组件库)

2、使用 Jetpack 能够帮助咱们在不一样的 Android 版本和不一样的设备上,实现行为一致的工作代码;(说明 Jetpack 能够轻松的处理由 Android 版本不一致和设备不一样产生的差别性和兼容性问题)

接下来我们看下 Jetpack 的构成


我们可以从上述的这张 Android Jetpack 的架构图上看到, Android Jetpack 的构成是十分庞大的,主要是由 **Architecture(架构组件) 、Foundationy(基础组件)、Behavior(行为组件、UI(界面组件)**四大部分组成

不难发现,这 Android Jetpack 系列库里面是有不少我们曾经学习过的东西,例如:Fragment、WebView、Room 都归属于 Jetpack 中来了,由此可见,Jetpack 并不全是些新的事物,只要是能够帮助开发者更好更方便的构建应用程序的组件,基本上都被加入到了 Jetpack 中来

Jetpack 的优势?

  • 遵循最佳做法:Android Jetpack 组件采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄露
  • 消除样板代码:Android Jetpack 可以管理各种繁琐的 Activity(如后台任务、导航),以便您可以专注于打造出色的应用
  • 减少不一致:这些库可在各种 Android 版本和设备中以一致的方式运作,助您降低复杂性
  • 拥有基于生命周期感知的能力:Android Jetpack 可以减少 NPE(空指针异常) 崩溃、内存泄漏,为开发出健壮且流畅的程序提供强力保障
  • 可以消除大量重复样板式的代码:可以加速 Android 的开发进程,组件可搭配工作,也可单独使用,能够显著提高工作效率

如何正确的去学习 Jetpack ?

关于 Jetpack 的文档资料 在网上其实有很多,但大多 杂而不精,并不能给提供一个好的学习方向;所以为了让大家对 Android Jetpack 有充分的了解, 我通过这些年的工作经历和对网上的资料查询和整理,最终将其整合了成了一个 PDF 文档《Jetpack架构组件从入门到精通》 需要 完整版PDF文档 的朋友文末卡片直接领取。

一、Android Jetpack - NavigationNavigation

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

二、Android Jetpack - Data Binding

Data Binding 是一个支持库,它使用一种 声明的方式 代替 编码的方式,用来绑定 UI 控件和数据源。

三、Android Jetpack - ViewModel & LiveDataViewModel

将视图和逻辑进行了分离。Activity或者Fragment只负责UI显示部分。具体的网络请求或者数据库操作则有ViewModel负责。类似于MVP模式中的Presenter层。

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。

四、Android Jetpack - Room

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


五、Android Jetpack - Paging

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


六、Android Jetpack - WorkManger

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

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

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

七、Android Jetpack架构组件之Lifecycle

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


八、Android Jetpack Compose 最全上手指南Compose

并不是像 RecyclerView、ConstraintLayout 这种做了一个或者几个高级的 UI 控件,而是直接抛弃了我们写了 N 年的 View 和 ViewGroup 那一套东西,从上到下撸了一整套全新的 UI 框架。直白点说就是,它的渲染机制、布局机制、触摸算法以及 UI 的具体写法,全都是新的。



由于篇幅限制,仅用截图展示了部分,需要完整文档资料的,可以点击下方卡片免费获取↓↓↓

由多个库组成的 Android Jetpack,到底有多厉害?相关推荐

  1. Android Jetpack 库架构组件 Room+Paging 基础使用

    上篇文章 Android Jetpack 库架构组件 ViewModel+LiveData 基础使用 的示例2中,使用 ViewModel+ LiveData 的方式实现了数据库数据查询并分页显示的效 ...

  2. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  3. Android Jetpack组件之Hilt使用

    前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. And ...

  4. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  5. Android Jetpack组件之WorkManger使用介绍

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  6. Android Jetpack组件之Navigation使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  7. Android Jetpack组件之 Room使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  8. Android Jetpack组件之 Paging使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  9. Android Jetpack组件之 LiveData使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

最新文章

  1. SQLServer DBA 三十问
  2. 【AI-1000问】机器学习和模式识别是什么关系?
  3. 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析
  4. Python 装饰器笔记
  5. 微软悬赏25万美元捉拿Conficker蠕虫作者
  6. 如何成功实现数据治理
  7. win7使用命令提示符怎么运行C语言,Win7如何打开命令行窗口?Win7打开命令提示符的多种方法...
  8. 爬虫 --- 08. 全站爬取(CrawlSpider), 分布式, 增量式爬虫
  9. UE4多人 mysql_UE4 添加多人联机功能
  10. 带sex的net域名_域名劫持的几种方法、域名劫持有什么方式
  11. 基于以太坊的58同城 | DApp开发与应用案例
  12. idea+springmvc+spring+mybatis+maven整合返回json数据web api-
  13. Discuz! Q 1.0来了!
  14. 用友携YonSuite亮相云栖大会,全方位生态合作再提速
  15. 如何将Word文件转化为Latex文件:word-to-latex-2.56详解
  16. 阅读材料精选 From-to-Date:2019.04.04~2019.04.29
  17. git 强制pull
  18. 【R-CNN】Rich feature hierarchies for accurate object detection and semantic segmentation (2014) 全文翻译
  19. 音视频开发-SRS 4.0开发环境搭建丨webrtc丨FFmpeg丨SRS流媒体服务器开发
  20. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

热门文章

  1. C语言的精华——指针 指针初识
  2. 免费的在线白板协作工具有哪些?
  3. pygame 躲避僵尸
  4. Java基础系列28-常用api之包装类
  5. 常见互联网34个术语解释
  6. Postman教程-Pre-request Script和Tests脚本进阶
  7. jdk15和jdk8_jdk15下载
  8. javascript--贪食蛇(完整版-逻辑思路)
  9. java学习之集合Set
  10. 用机器学习颠覆环法自行车赛传统体验 岱凯野心可不只有这一点!