新書推薦:
《
史铁生:听风八百遍,才知是人间(2)
》
售價:NT$
254.0
《
量子网络的构建与应用
》
售價:NT$
500.0
《
拍电影的热知识:126部影片里的创作技巧(全彩插图版)
》
售價:NT$
500.0
《
大唐名城:长安风华冠天下
》
售價:NT$
398.0
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:NT$
403.0
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:NT$
1100.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:NT$
435.0
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:NT$
1573.0
|
編輯推薦: |
随着移动领域的飞速发展,越来越多的工程师开始追求更高效率、更便捷的开发模式。而各种框架层出不穷,比如我们熟悉的MVC、MVP、MVVM等,每种框架都有其优缺点。为了统一开发规范,Google 推出了Jetpack,Jetpack 是一个由多个库组成的套件,可帮助开发者减少样板代码。
这是一本从使用方法、应用场景、实现原理等维度全面讲解Jetpack的著作,全书代码均采用Kotlin语言开发。
书中首先介绍Jetpack的基本知识,然后详细介绍了架构组件Lifecycle、ViewModel、LiveData、ViewBinding、DataBinding、Room、Hilt等,并通过切合实际的需求用例循序渐进地讲解了每个组件的使用方法和使用场景。
紧接着具体分析了Kotlin数据流Flow、Kotlin协程等的使用方法和实现原理,并结合项目中常见的问题深入地讲解如何从0搭建一个组件化的MVVM实战项目框架。
最后探讨了新的响应式UI编程技术——Jetpack Compose的用法,以帮助读者深入学习并理解Jetpack的应用场景。
|
內容簡介: |
全书共12章,首先介绍Jetpack的基本知识,然后详细介绍了架构组件Lifecycle、ViewModel、LiveData、ViewBinding、DataBinding、Room、Hilt等,并通过切合实际的需求用例循序渐进地讲解了每个组件的使用方法和使用场景。除此之外,还针对当下流行的Kotlin 协程和Flow进行了讲解,让读者了解如何使用这些技术结合Jetpack组件写出更加优雅的代码,并演示了实战项目“出行防疫App”的实现方法。z后介绍了全新的声明式UI编程——Jetpack Compose。
|
關於作者: |
黄林晴
资深Android技术专家,Android领域的技术布道者,目前是某软件研发公司移动端组负责人。从事移动开发多年,开发过多款移动应用程序,拥有丰富的项目经验。
华为云云享专家,腾讯云社区特邀评审,曾受Google GDG(Google开发者社区)邀请参加技术分享。CSDN博客专家,博客文章阅读量超过120万,在行业里有较高的知名度。微信公众号“Android技术圈”的创始人,长期坚持发表Android相关的技术文章,深受读者欢迎。
|
目錄:
|
前言
第1章 认识Jetpack 1
1.1 Android开发架构的发展历程 1
1.2 什么是Jetpack 3
1.3 如何构建支持Jetpack的项目 4
1.4 小结 6
第2章 使用Lifecycle,感知生命周期 7
2.1 从广告引导页的需求说起 7
2.2 Lifecycle的基本使用 10
2.2.1 使用Lifecycle优化广告引导页的需求 10
2.2.2 自定义LifecycleOwner 14
2.3 使用Lifecycle解决实际项目中常见的问题 16
2.3.1 Dialog内存泄漏问题分析 16
2.3.2 使用Lifecycle打造一个完美的Dialog 18
2.4 原理小课堂 19
2.5 小结 22
第3章 使用ViewModel管理页面数据 23
3.1 什么是ViewModel 23
3.2 使用ViewModel解决广告引导页屏幕旋转问题 26
3.3 ViewModel的生命周期 28
3.4 使用ViewModel实现数据共享 31
3.5 原理小课堂 33
3.6 小结 36
第4章 可观察的数据持有者类LiveData 37
4.1 什么是LiveData 37
4.2 LiveData的基本使用 38
4.3 map与 switchMap 41
4.4 原理小课堂 46
4.5 小结 49
第5章 视图绑定组件之ViewBinding 50
5.1 从findViewById说起 50
5.2 ViewBinding 的基本使用 53
5.3 ViewBinding的封装优化 55
5.4 原理小课堂 56
5.5 小结 58
第6章 数据绑定组件之DataBinding 59
6.1 DataBinding的基本使用 59
6.1.1 基础布局绑定表达式 60
6.1.2 利用DataBinding绑定点击事件 64
6.1.3 标签布局使用DataBinding 66
6.2 自定义BindingAdapter 67
6.3 双向数据绑定 70
6.4 DataBinding与 ViewBinding的区别 73
6.5 原理小课堂 73
6.6 小结 75
第7章 官方数据库框架之Room 76
7.1 Android数据库ORM框架 76
7.2 使用Room实现登录账号列表功能 77
7.2.1 账号列表的需求设计和数据库设计 77
7.2.2 准备工作 78
7.2.3 定义数据实体类 78
7.2.4 定义数据库访问对象 79
7.2.5 账号列表的查询与新增 80
7.2.6 账号列表的更新与删除 83
7.3 Room数据库的升级 86
7.4 原理小课堂 88
7.5 小结 90
第8章 减少手动依赖,探究Hilt 91
8.1 什么是依赖注入 91
8.2 基于Dagger看Hilt 93
8.3 Hilt的基本使用 93
8.3.1 添加依赖 93
8.3.2 依赖注入普通对象 95
8.3.3 依赖注入第三方组件 97
8.3.4 依赖注入架构组件 101
8.4 原理小课堂 102
8.5 小结 104
第9章 优雅地实现异步任务:Kotlin协程与Flow 105
9.1 什么是协程 105
9.2 使用协程优雅地实现异步任务 106
9.2.1 协程的基本用法 106
9.2.2 更多构建协程的方式 107
9.2.3 在Retrofit和架构组件中使用协程 113
9.3 Kotlin数据流 116
9.3.1 Flow的基本使用 116
9.3.2 探究StateFlow与SharedFlow 120
9.4 原理小课堂 122
9.5 小结 124
第10章 分页库Paging3的使用 125
10.1 Android中分页功能常见的设计方法 125
10.2 网络请求的封装与使用 126
10.3 使用Paging3实现网络数据的分页加载 129
10.3.1 官方推荐的最佳架构 129
10.3.2 PagingSource的定义与使用 131
10.3.3 PagingDataAdapter的定义与使用 133
10.3.4 将结果显示在UI上 134
10.3.5 监听加载状态 136
10.4 原理小课堂 140
10.5 小结 143
第11 章 打造一个MVVM架构的健康出行App 144
11.1 项目需求设计与可行性分析 144
11.2 组件化结构的设计与搭建 149
11.3 查询城市数据 155
11.3.1 实现逻辑层代码 156
11.3.2 实现UI层代码 160
11.4 查询城市核酸检测机构 165
11.4.1 实现逻辑层代码 165
11.4.2 实现UI层代码 167
11.5 查询疫情风险等级地区 169
11.5.1 实现逻辑层代码 169
11.5.2 实现UI层代码 171
11.6 查询健康出行政策 176
11.6.1 实现逻辑层代码 176
11.6.2 实现UI层代码 179
11.7 小结 182
第12章 体验最新响应式编程技术Jetpack Compose 183
12.1 什么是Jetpack Compose 183
12.2 Compose的基础知识 184
12.2.1 新建支持Compose的Android 项目 184
12.2.2 可组合函数与常用注解 187
12.3 Compose基础组件的使用 188
12.3.1 Compose 文本组件和图片组件 188
12.3.2 Compose 布局组件 190
12.4 Compose列表组件的使用 192
12.4.1 垂直列表组件Lazy-Column的使用 192
12.4.2 水平列表组件LazyRow的使用 196
12.4.3 网格列表组件Lazy-VerticalGrid的使用 197
12.5 小结 199
|
內容試閱:
|
【为什么要写这本书】
虽然我长期在CSDN上输出技术文章,也获得了不错的反响,但之前从来没有想过要写一本书,因为我知道写书是一件比写博客困难许多的事情。
技术交流群中许多读者问过我有没有比较系统的Jetpack学习资料可以推荐,我的回答一直都是官方文档。当我通过官方文档学习Jetpack的时候,发现里面往往都是比较简单的小例子,许多读者看完之后依旧不清楚Jetpack组件该如何使用。目前国内外讲解Jetpack的书籍寥寥无几,博客中讲解的知识点又比较零散,导致读者无法将Jetpack与真实的项目结合起来使用。
一次偶然的机会,机械工业出版社华章分社的编辑Lisa联系到我,问我是否有兴趣出版一本关于Jetpack的书籍,这着实让我受宠若惊。再基于上述原因,我坚定了写一本关于Jetpack图书的决心,于是,本书诞生了。
【读者对象】
本书适合已有Android开发基础并想要学习或者已经使用Jetpack开发的读者。全书代码使用Kotlin编写,所以需要读者有一定的Kotlin基础,即使没有Kotlin基础也没有太大关系,从这本书开始一起学习吧!
【如何阅读本书】
全书共12章,第1章介绍Jetpack的基本知识,主要包括Android开发架构的发展历程和如何构建支持Jetpack的项目。介绍完基本知识之后,第2章到第10章详细介绍架构组件的基本使用和在实际项目中可能遇到的一些问题,其中主要包括Lifecycle、ViewModel、LiveData、ViewBinding、DataBinding、Room、Hilt等基础架构组件,通过切合实际的需求用例循序渐进地讲解每个组件的使用方法和使用场景。除此之外还讲解了当下最流行的Kotlin协程和Flow相关知识,让读者了解如何使用这些技术结合Jetpack组件写出更加优雅的代码。学习完前面的基础知识后,第11章通过实战项目“健康出行App”演示如何搭建组件化结构的项目,并且将上述理论转化为实际成果。第12章作为扩展内容讲解了最新的响应式UI编程技术——Jetpack Compose。
读者可以根据自身情况来决定如何阅读本书。如果你是初学者,建议从第1章开始循序渐进地阅读,这样不会太吃力。如果你已经熟悉Jetpack的部分组件,可直接选择感兴趣的章节阅读,每个章节后面的原理小课堂也一定不要错过。
【勘误和支持】
关注微信公众号“Android技术圈”,回复“勘误”,在收到消息的页面评论、留言。
通过我的博客(https://huanglinqing.blog.csdn.net)评论、留言。
我会在收到信息后及时回复,对于一些反馈较多或重要的问题,我会通过公众号和博客集中回复。
书中的全部源文件除可以从华章网站(www.hzbook.com)的本书页面下载外,也可以从https://github.com/huanglinqing123下载。我会根据相应的功能同步更新代码。如果你有更多的宝贵意见,欢迎发送邮件至邮箱huanglinqing6@gmail.com,期待你的反馈。
|
|