腾讯 T10级 Jetpack 学习思维导图意外流出,还不赶紧过来围观?

2023-11-15

引言

2018年,Google 官方推出一个全新的开发组件工具库 Jetpack ,并将2017年所推出的一个架构组件库 Architecture Components 作为 Jetpack 的一部分纳入其中;当然,Jetpack 并没有就此定板,此后的几年里又有许多新的组件被加入到 Jetpack 中,未来 Jetpack 一定还会不断继续扩充

我们看下Google 官方的定义

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 的优点有哪些 ?

就像上述说的一样;Jetpack 是一个开发组件工具集,它的主要目的肯定是让开发者能够编写出更加简洁的代码,并简化我们的开发过程,这也就意味着 Jetpack 必将具有以下几个优点

遵循最佳做法

  • Android Jetpack 库采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄漏

无需捆绑

  • Android Jetpack 系列组件可以无需捆绑使用,你如果只想用里面的单个库,那么就可以仅仅依赖一个库

消除样板代码

  • Android Jetpack 可以管理各种繁琐的活动(如后台任务、导航和生命周期管理),以便您可以专注于打造出色的应用

减少不一致

  • 这些库可在各种 Android 版本和设备中以一致的方式运转,助你降低复杂性

Android Jetpack 要学吗?

在我看来谷歌提出这一系列的组件是想引领 Android 开发者逐渐统一开发规范,把现在好的一系列第三方吸纳进来;在原来感觉 Android 开发一直是放任自流的状态,到现在每次的 Android 版本更新都能体会的出来;谷歌在一步步的引领着开发者们往统一的方向标准发展

作为 Android 开发者,无论我们是否使用 Jetpack,就 Jetpack 本身而言,其精妙的设计以及设计思想都是非常值得我们学习的

如何学习 Jetpack ?

上述是 腾讯 T10 级 大佬面向学习 Jetpack 所制作的一张思维导图, 希望可以给大家提供一个好的学习方向并且通过这份思维导图融合了这些年的工作经历及对网上的资料查询和整理,最终将其整合成了一份 Jetpack 全家桶高级开发学习笔记; 有需要这份 Jetpack 全家桶高级开发学习笔记 的朋友:现在 私信 发送 “笔记” 即可 免费获取希望大家通过阅读这份笔记,能够查漏补缺;早日精通 Jetpack

资料内容展示如下:

Jetpack 全家桶目录

Jetpack 全家桶系列之 Lifecycle

  • 万物基于 Lifecycle
  • 手动管理生命周期的痛苦你不懂
  • 按照惯例的思考
  • 观察者模式
  • 引入 Lifecycle 后
  • 源码结构
  • 简单的源码分析
  • activity 生命周期处理
  • fragment 生命周期处理
  • Lifecycle State 大小比较

完整版 Jetpack 全家桶高级开发学习笔记 获取方式: 私信发送 “笔记” 即可 免费获取

Jetpack 全家桶系列之 ViewModel

  • ViewModel 的职责
  • 作为数据持有者
  • Fragment 间共享数据
  • 代替 Loader
  • ViewModel 源码分析
  • 如何做到 activity 重建后 ViewModel 仍然存在?
  • 如何做到 fragment 重建后 ViewModel 仍然存在?
  • 如何控制作用域?
  • 如何避免内存泄漏?
  • ViewModel 和 onSaveInstanceState

Jetpack 全家桶系列之 ViewModel

  • 数据驱动魔法师
  • DataBinding 基础
  • DataBinding 引入
  • 使用DataBinding 解决的问题及实现原理
  • Binding Adapter
  • DadaBinding + LiveData
  • 各种 findViewById 替代方案对比

完整版 Jetpack 全家桶高级开发学习笔记 获取方式: 私信发送 “笔记” 即可 免费获取

Jetpack 全家桶系列之 Navigation

  • Navigation 简介
  • Navigation 能做什么
  • Navigation 工作逻辑
  • Navigation Graph
  • Navigation 的使用技巧
  • 同一 graph 中共享 ViewModel
  • 嵌套 navigation graph
  • Navigation 设计探讨
  • fragment replace 你真的了解吗
  • 被重建的 fragment

Jetpack 全家桶系列之 LiveData

  • 我们都是 Adapter
  • 理想的数据模型
  • observable
  • lifecycle-aware
  • data holder
  • Transformations
  • LiveData 的错误用法
  • 错误地使用 var LiveData
  • LiveData 粘性事件
  • 源码结构
  • LiveData
  • MutableLiveData
  • Observer
  • 源码分析

有需要这份 Jetpack 全家桶高级开发学习笔记 的朋友:现在 私信 发送 “笔记” 即可 免费获取

目前我也在学习 Jetpack,相信未来 Jetpack 会越来越好

加油!!!各位 Android 开发者们

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

腾讯 T10级 Jetpack 学习思维导图意外流出,还不赶紧过来围观? 的相关文章

  • 如果我无限期地在后台运行 Android 线程会发生什么

    Android 文档表明 Oreo 对后台执行有新的限制 https developer android com about versions oreo background https developer android com abou
  • 如何设置日期选择器的日期?

    I use DatePickerDialog OnDateSetListener效果很好 我想在日期选择器中添加 120 天的日期 我的意思是 如果我添加 120 天 日期和月份将自动更改 怎么做 像这样的事情应该可以解决问题 Calend
  • 避免 XferMode 替换画布上的颜色

    我正在尝试替换使用在画布上绘制的内容的颜色避免Xfer模式 http developer android com reference android graphics AvoidXfermode html 从 android 文档来看 它看
  • 使用 setMessage() 在 AlertDialog 中显示多行文本和变量

    我需要在警报对话框中显示多行文本 如果我使用多个 setMessage 方法 则仅显示最后一个 setMessage 如下所示 final AlertDialog alertDialog new AlertDialog Builder th
  • 将倒计时器从 10 秒改为 1 秒

    我有一个倒计时器 它以 1 秒的增量从 10000 毫秒倒计时到 0 毫秒 以使按钮在 10 秒后可单击 尽管计时器是准确的并且按照代码的说明执行操作 但我想更改秒的表示方式 但我不知道如何更改 java void startTimer c
  • 来自 InputStream 的 Android 通用图像加载器 URI

    我想问一下UIL URI是从InputStream输入的 因为我的图像源来自 ZIP 然后我必须提取它才能显示该图像 因为图像太大 我必须使用UIL库 任何人都知道如何从InputStream插入UIL 我认为你可以这样做类似于从数据库加载
  • 从主线程查询android中的数据库

    我使用的是 sql lite 通常查询 1 个表 如果我从主 ui 线程进行查询会不会很糟糕 谢谢 这取决于 如果您的表确实很大 则执行查询可能需要一些时间 并且可能会导致您的应用程序出现明显的延迟 还有 你说你usually仅查询一张表
  • android.os.FileUriExposedException 在 Oreo 中引起(仅!)[重复]

    这个问题在这里已经有答案了 从 Google Play Console 中 我可以看到此异常仅发生在 Android 8 0 的设备上 android os FileUriExposedException at android os Str
  • LibGDX 闪烁

    我已经使用 LibGDX UI 设置来启动一个项目 我在实现 ApplicationListener 中唯一拥有的是 public void create setScreen new LoadingScreen this 这应该会触发 Lo
  • Picasso onBitmapLoaded 从未调用过

    我遇到了同样的问题 我想使用毕加索生成的可绘制对象进行图像缓存 但我无法得到相同的结果 这是我用来访问位图可绘制对象的代码 Target targetBitmap new Target Override public void onPrep
  • 以编程方式更改小部件布局

    假设我有两个小部件布局 Layout1 和 Layout2 小部件的默认值是 Layout1 但我允许用户选择 他们希望小部件采用哪种布局 所以如果用户更改为 Layout2 如何以编程方式将布局更改为 Layout2 小部件没有像活动那样
  • Android MapView v2 黑屏

    我一直在尝试实现 android 的 MapView v2 除了这个错误之外 我让它工作得很好 This is what it looks like when I load the app from scratch 如您所见 没有任何问题
  • 如何在phonegap中同时使用相机API选择多个图像?

    如何同时选择或拾取多个图像phonegap camera API使用时Camera DestinationType FILE URI 我一次只能选择一张图像 我可以使用以下命令在 SD 卡中选择多个文件 包括 txt pdf this ht
  • 如何将点击侦听器添加到 Android/Java Textview 中的字符串中?

    我想要完成的是大多数 Twitter 应用程序中的标准操作 在文本视图中 文本字符串中的单词前面可能有 提及或 主题标签 并且它们实际上能够添加点击侦听器这个词启动了另一项活动 有谁知道这是如何实现的 下面我附上了一张示例照片 显示了我想要
  • 更新到Android 5.0后出现java.lang.UnsatisfiedLinkError

    我正在开发一个 Android 应用程序 它使用一个名为 liballjoyn java so 的本机库 可用here https allseenalliance org developers download在 Android 核心 SD
  • SQLiteAssetHelper 甚至在从资产文件夹复制数据库之前就导致立即崩溃

    https github com jgilfelt android sqlite asset helper https github com jgilfelt android sqlite asset helper 我要从SQLiteOpe
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • ConstraintLayout 源代码位于哪里?

    哪里可以找到android的源代码ConstraintLayout 我在支持框架存储库甚至谷歌搜索中都找不到它 它的源代码在这里 https android googlesource com platform frameworks opt
  • onActivityResult() Intent 数据始终为 null

    有人可以告诉我为什么Intent data总是为空 Override protected void onActivityResult int requestCode int resultCode Intent data super onAc
  • INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113设备

    当我在 android 8 0 设备中执行 android 项目时 我收到错误 INSTALL FAILED NO MATCHING ABIS 无法提取本机库 res 113 错误图像 https i stack imgur com 3kb

随机推荐

  • sql monitor简介

    Sql monitor 简介 11g 之后的版本 oracle 提供了一种实时 sql 监控工具 即 sql monitor 默认情况下 当 sql 开启并行 或者 sql 的单词执行时间超过 5 秒钟 sql monitor 就会自动触发
  • iOS开发Swift-15-沙盒sandbox,JSON编码和Codable协议,本地数据存储,SQLite增删改查,视图按照数据排序-待办事项App进阶版...

    1 在待办事项App中 寻找沙盒路径 TodosTableVC Delegate import UIKit UITableViewDelegate extension TodosTableVC 当用户点击cell的时候调用 override
  • 只要以查询数据的前三行如何处理

    select m name m numbs from select name count name as numbs from kh hbrc info t where t tpr fl 软件技术 and t xzzhw 软件部 group
  • 动态代理详解

    想要更加透彻的理解动态代理 首先要熟悉下静态代理 一 静态代理 总结来说 目标类和代理类实现了相同的接口 在代理类中依赖了目标类 代理类的方法中调用了目标类的方法 并做了一些增强性的工作 1 实现静态代理 demo 要求 在某个类执行类中的
  • C/C++通过网卡名称获取ipv4地址

    通过网卡名称获取对应的IP地址 1 通过网卡名称获取对应的IP地址 1 通过网卡名称获取对应的IP地址 include
  • 华为机试:字符串加密

    一 题目 描述 有一种技巧可以对数据进行加密 它使用一个单词作为它的密匙 下面是它的工作原理 首先 选择一个单词作为密匙 如TRAILBLAZERS 如果单词中包含有重复的字母 只保留第1个 其余几个丢弃 现在 修改过的那个单词属于字母表的
  • Fedora12 Linux启动过程

    1 加载BIOS BIOS Basic Input Output System 是固化到计算机内主板上一个ROM芯片上的程序 保存CPU相关信息 设备启动顺序信息 硬盘信息 内存信息等等 打开计算机电源第一项工作即加载BIOS 进行POST
  • vim插件2--autocomplpop

    vim插件2 autocomplpop 功能 自动打开弹出菜单 以便于文字或单词补全 使用本插件后 vim会自动打开弹出菜单并显示相应补全项 它在输入字符或插入模式下移动光标时完成 不会阻止继续输入字符 AutoComplPop Autom
  • Spring实践(二)AOP的底层实现机制

    上一篇通过模拟spring的IOC 机制来理解控制反转 依赖注入 本篇同样模拟一下spring的第二大特性AOP Aspect Oriented Programming 本篇将介绍如下内容 1 AOP的应用场景 2 生成一个简单的工程案例
  • Devops理论与基础

    目录 文章目录 目录 1 什么是DevOps 2 什么是CI CD 1 一家软件公司 2 软件开发过程 3 传统应用发布模式 4 持续集成 CI 5 持续部署 CD 6 CI CD带来的好处 7 CI CD管道的阶段 3 DevSecOps
  • 如何寻找数据集?

    如何寻找数据集 除了医疗领域之外 其他领域的数据集有时也很难获取 这就需要我们掌握一些常见的数据集搜集方法和常用资源 最近 Medium 上的一位博主介绍了多个常用的数据集获取来源 1 Awesome Data 这是一个 GitHub 存储
  • git拉取的小程序代码,编译显示[ app.json 文件内容错误] app.json: app.json 未找到 怎么办?

    项目运行到微信开发者工具时 出现如此报错 解决方案 1 项目导入方式不正确 应该导入应该导入unpackage dist dev mp weixin打开项目 而不是直接打开项目文件夹 2 应该注意将项目的AppId 换成有自己开发权限的id
  • 蓝牙解析(part7):BLE的连接

    转自Wowo大神的http www wowotech net bluetooth ble connection html 1 前言 了解蓝牙的人都知道 在经典蓝牙中 保持连接 Connection 是一个相当消耗资源 power和带宽 的过
  • 动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 1 静态BGP功能简单 其带宽功能 可以实现多网接入 但路径上只有通向几大运营商的固定的几条路径 当某个运营商方向 的某个路由节点出现故障时 会导致某个运营商方向不能正常通信 造成单点故障 影响范围是 某个运营
  • 应急响应全流程

    一 根据情报先判断出需要出应急的是什么事件类型 常见事件类型 大规模沦陷 情况类型 情况内容 挖矿病毒 勒索病毒 无文件落地 不死 顽固 马 钓鱼 数据劫持 二 保持第一现场 第一现场包含 第一发现人 第一情报 失陷主体 群体 主体 群体行
  • drools 7.x 决策表使用

    1 何时使用决策表 何时使用决策表 如果规则能够被表达为模板 数据的格式 那你 应该考虑使用决策表 决策表中的每一行就是对应模板的一行数据 将产生一个规则 运行决策表 Drools 引擎所部署的系统中执行决策表 首先 决策表转换 成的Dro
  • Git — husky + eslint 实现代码提交检测

    一 配置ESlint 1 1 安装eslint npm install eslint D 1 2 初始化eslint 生成配置文件 npx eslint init 1 3 在编辑器安装ESlint插件 1 4 通过执行命令检测文件代码规范
  • 要隐藏高德地图的线外面的区域

    要隐藏高德地图的线外面的区域 可以通过设置地图的 mask 属性来实现 下面是具体的步骤 获取需要隐藏的区域的边界坐标点集合 这些坐标点必须按照顺时针或逆时针方向排序 这样才能正确地关闭区域 推荐使用高德官方提供的在线地图工具获取坐标点 创
  • 栈.栈STL

    栈 是后进先出的数据结构 它叫做栈 栈限定为只能在一端进行插入和删除操作 栈的实现只需要一个一维数组和一个指向栈顶的变量top就可以了 我们通过top来对栈进行插入和删除操作 栈的使用 1 判定回文串 利用栈实现判断字符串是不是回文串 栈用
  • 腾讯 T10级 Jetpack 学习思维导图意外流出,还不赶紧过来围观?

    引言 2018年 Google 官方推出一个全新的开发组件工具库 Jetpack 并将2017年所推出的一个架构组件库 Architecture Components 作为 Jetpack 的一部分纳入其中 当然 Jetpack 并没有就此