前言

2018年谷歌I/O,Jetpack横空出世,官方介绍如下:

Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。

好好琢磨这段介绍就能解释我们刚才的问题。

Jetpack到底是什么?

  • 是一套库、工具和指南。说白了就是一系列的库或者工具集合,而且这些工具是作为我们优质应用的指南,相当于官方推荐做法。

google推出这个系列的原因是什么?

  • 规范开发者更快更好的开发出优质应用。一直以来,Android开发都充斥了大量的不规范的操作和重复代码,比如生命周期的管理,开发过程的重复,项目架构的选择等等。所以Google为了规范开发行为,就推出这套指南,旨在让开发者们能够更好,更快,更规范地开发出优质应用。

但为什么国内的开发者很难接受呢?其实大概可以分析出几点原因:

  • 对新技术的嗅觉比较迟钝
  • JetPack单一组件不知道怎么用,在哪里用
  • 没有完整版的Copy源
  • 老项目之前没有用JetPack,现在改会牵一发动全身,懒的改,爱谁谁
  • 对JetPack是什么都不知道

正是因为这些原因,导致大家完全忽略了JetPack的强大以及它能给我们带来的改变,接下来我们分析下它能给我们带来什么。

1.解决了 Android 架构问题

由于之前 Google 并没有推出关于 Android 应用程序架构设计的标准,所以各个企业的开发者都需要打磨出一套符合自己项目的开发方案。但是这就会造成两个明显的问题,第一个是这些方案都是野路子出生,没有官方身份、第二个是无法从这些方案中找出一套符合所有人期望的方案。说直白了就是没有统一标准,碎片化严重。所以Google也意识到了这个问题就推出了JetPack,让开发者能够使用标准的架构组件,而不用去纠结架构的方案设计,可以将更多的精力放在自己的业务代码上。

2.提升了代码质量

Jetpack 拥有基于生命周期感知的能力,可以减少内存泄漏、NPE崩溃,为我们开发出健壮且流畅的程序提供强力保障,同时样板代码的自动生成可以让人为遗留BUG减少。

3.提升了开发效率

Jetpack 可以减少样板代码,有助于提升 Android 开发的效率。这些组件可以单独使用,也可以组合使用,并且在不同 Android 版本中运行一致。

看到这些JetPack带来的改变,难道大家还能放任不管嘛,还能不动心?接下来我们从实际工作岗位需求出发:

看到这里大家应该已经明白了,JetPack现在在很多的岗位需求中都明确了,也意味着以后的面试过程中除了以前的知识点,又出现了JetPack。

如何学习?

如果你是因为缺少学习资料,而我正好薅到这本阿里十年技术专家联合打造“最新”《Jetpack架构组件入门到精通》和《Jetpack强化实战手册》,是你学习Jetpack的葵花宝典。下面正文开始:

《Jetpack架构组件入门到精通》

Android Jetpack - Navigation

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

Android Jetpack - Data Binding

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

Android Jetpack - ViewModel & LiveData

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

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

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 的具体写法,全都是新的。

由于篇幅有限,进截图展示部分内容,朋友们如果有需要完整版学习手册,可以到我的【Github】阅读下载.

《Jetpack强化实战手册》

一、初识ConstraintLayout之实现登录页面

1.创建项目

2.沉浸式的布局

3.富文本

4.属性动画

二、Navigation实践之实现APP主框架以及Navigation的相关介绍

1.搭建 Bottom Navigation Activity

2.导航界面跳转

3.Navigation传值

4.Navigation跳转动画

5.导航文件拆分

6.Deeplink导航

三、使用 Coroutines, Retrofit, Moshi实现网络数据请求

1.kotlin - Coroutine 协程

2.用协程和Retrofit实现网络请求

四、使用 TabLayout,ViewPager2 ,RecyclerView实现实现歌单广场页面

1.ViewPager2

2.TabLayout

3.RecyclerView

4.网络数据请求和数据填充

5.优化界面

五、歌单页面MVVM架构改造及其ViewModel和LiveData的使用介绍

1.MVC和MVVM介绍

2.修改歌单页面

六、Paging实现加载更多和下拉刷新,错误后重新请求

1.Paging的优势

2.Paging实现分页加载更多

3.Paging和SwipRefreshLayout组合实现下拉刷新

4.给RecyclerView添加加载状态的Footer

5.发生网络错误后重试

6.帧动画

七、vlayout嵌套横向RecyclerView和Banner 实现主页的展示,自定义Moshi的JsonAdapter

1.vlayout架构分析

2.vlayout布局介绍

3.基础工作准备

4.vlayout实现轮播图

5.字段内容类型不一致

八、Room数据库实现增删改查和事务处理

1.添加Room依赖

2.Room详细介绍

3.DataBase创建时插入数据

4.Room实现歌单标签编辑界面的增删改查

九、Room数据库Migration

1.新建 Entity

2.新建 Dao

3.修改 Database

4.修改 HomeViewModel

5.Migration

十、ExoPlayer进行视频播放的实现

1.ExoPlayer介绍

2.ExoPlayer简单的使用方法

3.ExoPlayer简单自定义

4.ExoPlayer高级自定义

5.ExoPlayer在RecyclerView中的复用

十一、MotionLayout让动画如此简单

1.MotionLayout基础

2.关键帧 Keyframes

3.代码启动动画和监听动画

4.MotionLayout案例分析

十二、Kotlin Flow基础知识详解

1.Flow 引入的场景

2.Flow 的特性

3.Flow的构造函数

4.Flow中间运算函数

5.Flow结束函数

6.Flow的错误异常处理

7.Flow的取消

8.StateFlow/MutableStateFlow

十三、Kotlin Flow项目实战-网络、数据库和UI的应用

1.MVVM架构中留给Flow的位置

2.网络数据请求

3.UI相关 - 输入框中输入关键词

4.数据库

十四、View Binding替代ButterKnife和Kotlin synthetics

1.解决findViewById的忧伤

2.View Binding的使用

3.从Kotlin synthetics迁移到View Binding

有需要的朋友直接点击此处免费获取完整文档。

学习Android Jetpack? 入门教程和进阶实战这里全都有!的更多相关文章

  1. Linux Capabilities 入门教程:进阶实战篇

    原文链接:https://fuckcloudnative.io/posts/linux-capabilities-in-practice-2/ 该系列文章总共分为三篇: Linux Capabilit ...

  2. 分享《机器学习实战基于Scikit-Learn和TensorFlow》中英文PDF源代码+《深度学习之TensorFlow入门原理与进阶实战》PDF+源代码

    下载:https://pan.baidu.com/s/1qKaDd9PSUUGbBQNB3tkDzw <机器学习实战:基于Scikit-Learn和TensorFlow>高清中文版PDF+ ...

  3. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  4. 最新Python3.6从入门到高级进阶实战视频教程

    点击了解更多Python课程>>> 最新Python3.6从入门到高级进阶实战视频教程 第1篇 Python入门导学 第2篇 Python环境装置 第3篇 了解什么是写代码与Pyth ...

  5. 1.0 Android基础入门教程

    1.0 Android基础入门教程 分类 Android 基础入门教程 本教程于2015年7月开始撰写,耗时半年,总共148节,涵盖了Android基础入门的大部分知识,由于当时能力局限,虽已竭尽全力 ...

  6. Linux Capabilities 入门教程:基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilit ...

  7. Capabilities 入门教程:基础实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 待续... 上篇文章介绍了 Linux capabilit ...

  8. 我的Android前生今世之缘-学习经验-安卓入门教程(六)

    关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己. 本篇文章同步微信公众号 欢迎大家关注我的微信公众号:「醉翁猫咪」 据我所知,网上教学资料一堆一堆的,那么还有很多人说,如何学习? ...

  9. Realm for Android快速入门教程

    介绍 如果你关注安卓开发的最新趋势,你可能已经听说过Realm.Realm是一个可以替代SQLite以及ORMlibraries的轻量级数据库. 相比SQLite,Realm更快并且具有很多现代数据库 ...

随机推荐

  1. Dockerfile优化方式

    如今GitHub 仓库中已经包含了成千上万的Dockerfile,但并不是所有的Dockerfile都是高效的.本文将从四个方面来介绍Dockerfile的最佳实践,以此来帮助大家编写更优雅的Dock ...

  2. ps 合并两张图片

    1.ps 打开第一张图片,2.打开另一张图片为图层.3.选中图层,创建蒙版: 4.点击蒙版+按Alt键,打开蒙版:5.打开蒙版后选中渐变工具,途中黑色为不显示区域,(注意渐变模式要改为正常):6.调整 ...

  3. HDU 4445 Crazy Tank 高中物理知识忘得差不多了

    题意不难理解,仔细看题吧,就不说题意了 #include <iostream> #include <cstdio> #include <cstring> #incl ...

  4. 信息论估计工具jidt基本使用

    JIDT基本介绍 JIDT是 Java Information Dynamics Toolkit的简称,用于研究复杂系统中信息论相关度量的计算,它是一个基于java的开源工具库,也可以在Matlab. ...

  5. IDA Pro 6.0使用Qt 框架实现了跨平台的UI

    IDA Pro 6.0使用Qt 框架实现了跨平台的UI.它的好处是插件编写者还可以直接使用 Qt 开发跨平台 UI.但是编剧呢? 在这篇博文中,我们将说明如何使用PySide使用IDAPython为 ...

  6. Java核心基础第4篇-Java数组的常规操作

    Java数组 一.数组简介 数组是多个相同类型数据的组合,实现对这些数据的统一管理 数组属引用类型,数组型数据是对象(Object) 数组中的元素可以是任何数据类型,包括基本类型和引用类型 数组类型是 ...

  7. Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议

    目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...

  8. ESP32使用SPIFFS文件系统笔记

    基于ESP-IDF4.1 1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/unistd.h> ...

  9. 入门Kubernetes-Service

    一.前言 前一篇文章通过 Deployment 实现了Pod中服务实现滚动更新/回滚等操作:在真实应用场景中,需要将一组Pod提供给外部访问.而且Pod生命周期是短暂的,在 Pod 的生命周期过程中, ...

  10. Linux- RPM与yum软件包安装

    Linux安装及管理程序一.Linux应用程序基础1)应用程序与系统命令的关系2)典型应用程序的目录结构3)常见的软件包封装类型二.RPM包管理工具① RPM软件包管理器Red-Hat Package ...