书籍作者:叶坤 | ISBN:9787121390555 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2634 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《Android Jetpack应用指南》讲解的是Android Jetpack最核心的内容—架构。第1章将对Jetpack做一个大致的介绍。第2章至第9章,将分别详细介绍为搭建MVVM架构而设计的各个Jetpack组件,包括LiveData、ViewModel、DataBinding等。第10章是对前面各章节的总结,将向读者详细介绍什么是数据模型驱动界面更新、什么是MVVM架构,以及如何利用Jetpack组件搭建符合MVVM架构规范的应用程序。
本书假设读者对Android应用程序有基本的了解,希望系统学习Jetpack,并打算最终使用Jetpack组件架构符合MVVM规范的应用程序。
叶坤,毕业于闽南师范大学计算机系。曾先后就职于网龙、搜狐畅游17173、豆瓣。在豆瓣任职期间,负责豆瓣FM Android客户端的研发工作。现为美餐网资深Android工程师,负责美餐行星项目Android客户端的研发工作。
他在大学期间便开始自学Android研发技术,从事Android研发已有10年,在该领域有较为丰富的经验,曾译《Android高性能编程》一书。除了码字,他还十分喜爱阿根廷探戈。
开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底座的积木,随着项目复杂度的上升,维护起来会困难重重,工程师会不停地陷入技术债务之中—“积木的倒塌”只是时间问题。
如何把握模块的粒度,在保持模块独立性的同时,又不影响模块间的通信,是全世界优秀的Android工程师共同追求的目标。为了解决这一问题,各类架构模式层出不穷,比较著名的有MVC、MVP和MVVM。Jetpack正是在这一背景下诞生的。它由Google官方推出,用于方便工程师搭建符合MVVM规范的Android应用程序。
本书特色
《Android Jetpack应用指南》是国内外第一本系统介绍Jetpack的图书。它可以让你对Jetpack中的各个组件有一个全面且清晰的了解。本书的每个章节都从实际出发,通过实际案例告诉你,如何使用这些Jetpack组件,为什么需要这些组件,它们能解决开发过程中的什么问题。不仅如此,本书还对其中部分组件的源码进行了简要的分析,让读者能够了解组件背后的原理。知其然,更知其所以然。
周末带上这本书,到咖啡馆点上一杯咖啡,相信只需要一个下午的时间,你就会对Jetpack有一个全面的了解了。如果你愿意按照书中的示例代码运行一遍程序,相信你在下一次面试时,面对面试官提出的关于Jetpack和MVVM的问题,就可以“重拳出击”,而不是“唯唯诺诺”了。
目标读者
读者只需要对Android应用程序开发有基本的了解即可,不需要具备丰富的Android开发经验。
如果读者是一位初级Android工程师,对项目架构充满好奇,想尝试自己来架构应用程序,那么本书一定适合你。它将带领你了解什么是Jetpack,如何使用Jetpack组件构建符合MVVM规范的应用程序,让你少走弯路。
如果读者是一位资深的Android工程师,希望了解Jetpack组件对于架构手头正在研发的项目是否有帮助,那么本书同样适合你。通过本书,你可以快速获知Google对Android的态度,以及Android未来将朝着哪个方向发展。
无论是初级工程师还是资深工程师,相信本书都会对你有所帮助。拥抱Jetpack,就是在拥抱Android的未来!不要有压力,书中有丰富的插图和代码示例,相信你一定可以快速掌握Jetpack!
学习建议
Android Jetpack组件是库的集合,这些库是为协同工作而构建的,你可以单独使用某个组件,也可以混合搭配使用它们。
第1章 初识JETPACK 1
1.1 ANDROID应用程序架构设计标准的缺失概论 1
1.2 什么是JETPACK 2
1.3 JETPACK与ANDROIDX 3
1.4 迁移至ANDROIDX 4
1.5 新建项目默认支持ANDROIDX 6
1.6 总结 8
第2章 LIFECYCLE 9
2.1 LIFECYCLE的诞生 9
2.2 使用LIFECYCLE解耦页面与组件 10
2.2.1 案例分析 10
2.2.2 LifeCycle的原理 11
2.2.3 解决方案 12
2.3 使用LIFECYCLESERVICE解耦SERVICE与组件 15
2.3.1 LifeCycleService基本介绍 15
2.3.2 LifecycleService的具体使用方法 16
2.4 使用PROCESSLIFECYCLEOWNER监听应用程序的生命周期 19
2.4.1 ProcessLifecycleOwner存在的意义 19
2.4.2 ProcessLifecycleOwner的具体使用方法 19
2.5 总结 22
第3章 NAVIGATION 24
3.1 NAVIGATION的诞生 24
3.2 NAVIGATION的主要元素 25
3.3 使用NAVIGATION 26
3.3.1 创建Navigation Graph 26
3.3.2 添加NavHostFragment 28
3.3.3 创建destination 30
3.3.4 完成Fragment页面切换 33
3.3.5 使用NavController完成导航 36
3.3.6 添加页面切换动画效果 38
3.4 使用SAFE ARGS插件传递参数 40
3.4.1 常见的传递参数的方式 40
3.4.2 使用safe args传递参数 40
3.5 NAVIGATIONUI的使用方法 43
3.5.1 NavigationUI存在的意义 43
3.5.2 案例分析 43
3.5.3 扩展延伸 48
3.6 深层链接DEEPLINK 49
3.6.1 DeepLink的两种应用场景 49
3.6.2 PendingIntent的方式 50
3.6.3 URL的方式 52
3.7 总结 54
第4章 VIEWMODEL 56
4.1 视图与数据模型之间的桥梁VIEWMODEL 56
4.2 VIEWMODEL的生命周期特性 57
4.3 VIEWMODEL的基本使用方法 58
4.4 VIEWMODEL的原理 62
4.5 VIEWMODEL与ANDROIDVIEWMODEL 64
4.6 VIEWMODEL与ONSAVEINSTANCESTATE() 方法 65
4.7 总结 65
第5章 LIVEDATA 67
5.1 实时数据LIVEDATA 67
5.2 LIVEDATA和VIEWMODEL的关系 68
5.3 LIVEDATA的基本使用方法 68
5.4 LIVEDATA的原理 71
5.5 LIVEDATA.OBSERVEFOREVER()方法 72
5.6 VIEWMODEL+LIVEDATA实现FRAGMENT间通信 73
5.7 总结 79
第6章 ROOM 80
6.1 ANDROID官方ORM库ROOM 80
6.2 ROOM的基本使用方法 81
6.2.1 Room的相关概念 81
6.2.2 案例分析 82
6.3 ROOM与LIVEDATA、VIEWMODEL结合使用 87
6.3.1 LiveData和ViewModel带来的好处 87
6.3.2 案例优化 89
6.4 ROOM数据库升级 91
6.4.1 使用Migration升级数据库 91
6.4.2 异常处理 92
6.4.3 Schema文件 93
6.4.4 销毁与重建策略 95
6.5 预填充数据库 96
6.5.1 createFromAsset() API和createFromFile() API 96
6.5.2 createFromAsset() API的使用方法 97
6.6 总结 101
第7章 WORKMANAGER 102
7.1 WORKMANAGER的作用 102
7.2 WORKMANAGER的3个重要特点 102
7.3 WORKMANAGER的兼容方案 103
7.4 WORKMANAGER的基本使用方法 104
7.4.1 添加依赖 104
7.4.2 使用Worker类定义任务 104
7.4.3 使用WorkRequest配置任务 105
7.4.4 将任务提交给系统 107
7.4.5 观察任务的状态 107
7.4.6 取消任务 108
7.4.7 WorkManager与Worker之间的参数传递 108
7.4.8 周期性任务PeriodicWorkRequest 110
7.4.9 任务链 110
7.5 总结 112
第8章 DATABINDING 113
8.1 DATABINDING的意义和优势 113
8.2 DATABINDING的简单绑定 114
8.2.1 未采用DataBinding的编码方式 114
8.2.2 采用DataBinding完成简单的绑定 116
8.3 DATABINDING响应事件 124
8.4 二级页面的绑定 127
8.5 BINDINGADAPTER的原理 130
8.6 自定义BINDINGADAPTER 132
8.6.1 自定义BindingAdapter的基本方法 132
8.6.2 方法重载 135
8.6.3 多参数重载 137
8.6.4 可选旧值 138
8.7 双向绑定 141
8.7.1 单向绑定和双向绑定 141
8.7.2 实现双向绑定 142
8.7.3 使用ObservableField优化双向绑定 145
8.7.4 ObservableField与LiveData 146
8.8 RECYCLERVIEW的绑定机制 147
8.9 总结 154
第9章 PAGING 155
9.1 PAGING组件的意义 155
9.2 PAGING支持的架构类型 155
9.3 PAGING的工作原理 157
9.4 PAGING的3个核心类 158
9.5 3种DATASOURCE 159
9.6 POSITIONALDATASOURCE的使用方法 160
9.7 PAGEKEYEDDATASOURCE的使用方法 176
9.8 ITEMKEYEDDATASOURCE的使用方法 184
9.9 BOUNDARYCALLBACK的使用方法 190
9.9.1 BoundaryCallback的意义 190
9.9.2 BoundaryCallback的使用流程分析 191
9.9.3 项目演示 192
9.10 总结 202
第10章 MVVM架构 204
10.1 MVVM架构与JETPACK 204
10.2 数据模型驱动界面更新 204
10.3 简要回顾JETPACK组件 206
10.4 使用JETPACK组件构建MVVM应用程序 207
10.5 总结 224
书很薄,没有废话,读完这本书可以让你对Jetpack有深入且全面的了解。我觉得是本好书,我给自己打五星。
2020-07-14
作者写的很用心,技术精进需要不断的知识充电
2020-07-14
不错的书,为了学习Jetpack专门买了一本,值得推荐。
2020-07-14
国内Jetpack的书不多,一直是零零碎碎的看公号和博客,这本感觉不错,细而且很深入,手把手教学了。买了一本,支持一下作者,真的感谢分享
2020-07-14
一周把书大概看了一遍,文字通俗易懂。作者相当用心,案例讲解同时,也阐述了设计思路,遵循了哪些开发原则。接下来认真学习,一个案例一个案例的复盘过去。本书适合入门或者有一定基础想提高的朋友们。
2020-07-17