书籍详情
《Android Jetpack应用指南》[52M]百度网盘|亲测有效|pdf下载
  • Android Jetpack应用指南

  • 热度:12391
  • 上架时间:2024-06-30 09:38:03
  • 价格:9.0
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍


9787121336775  9787121390555 9787121348389  9787121315305


基本信息

商品名:ANDROID组件化架构

ISBN:9787121336775

定价:79.00

出版社:电子工业出版社

作者:苍王

出版时间:2018-03-01

包装:平装

开本:16开

用纸:胶版纸

编辑推荐

Android走过的十个年头,其技术演进也是有迹可循的,本书作者基于自己在大型App架构的技术演进中成长的经历,将遇到的相关问题进行深入剖析,包括Android 组件化架构、模块化架构、插件化架构等,并对近来国内热门Android架构体系及其研发流程,以及开发中遇到的问题进行深入剖析。

内容简介

本书首先介绍Android组件化开发的基础知识,剖析组件化的开发步骤和常见问题,探究组件化编译原理和编译优化措施。其次在项目架构上,介绍如何组织团队来使用组件化开发,并将业务和人力进行解耦。□后深入介绍组件化分发技术及运用,探讨组件化架构的演进及架构的思维。

前言序言

前  言

这是一本关于Android组件化的书籍

这是一本关于Android入门的书籍。

这是一本关于Android进阶的书籍。

这是一本关于Android编程原理的书籍。

这是一本关于Android架构的书籍。

我更愿意将这本书看作一本关于思维哲学的书籍。

书的用途,因人而异,有人用来垫书桌,有人将其作为工具,有人将其细细品味……

你用什么角度和什么态度来看待图书,它就会以什么形态展现在你眼前。

? 当你将它作为一本Android工具书时,它会指导你对Android的进阶学习。

? 当你将它作为一本软件架构书籍时,它会将工具和人的思想关联来调整你对架构的认知。

? 当你将它作为一本思维哲学书籍时,你有可能对Android开发有新的认识。

本书概要

□□章:组件化基础。

本章重点介绍组件化中开发的基础概念。首先介绍组件化中的依赖和解耦,然后介绍组件化中AndroidManifest的合成差异,□后深度认识Application的重要作用。

第2章:组件化编程。

本章介绍组件化中相关的开发编程技术,包括组件化通信、组件化存储、跨模块跳转、资源冲突解决、多模块渠道、资源混淆、数据库运用、签名相关的运用及原理剖析。

第3章:组件化优化。

本章介绍如何使用Gradle对组件化中多种使用方式的优化,以及对编译适配的优化。随后介绍使用Git仓库来组织多人进行组件化开发,以及多人开发的项目解耦。

第4章:组件化编译。

本章介绍如何在组件化项目中缩短编译时间。首先介绍Gradle的打包流程,以及Gradle构建基础。随后介绍Instant Run的使用和适用场景。□后介绍Freeline增量编译,以及部分原理剖析。

第5章:组件化分发。

本章介绍如何在单页面中处理复杂的业务逻辑。首先介绍Activity、Fragment、View的生命周期,以及组件化分发架构的嵌入。随后介绍依赖倒置型的设计和层级问题的解决方法,其中插叙了编译期注解的高效生成代码的形式。□后介绍动态加载配置的形式。

第6章:组件化流通。

本章介绍如何在组件化中工程封装工具SDK。首先介绍Maven基础和组件化中的缓存策略,随后介绍组件化中SDK的合成方式,□后介绍如何将SDK发布到流通平台中。

第7章:架构模板。

本章介绍如何制定组件化多人开发规范。首先介绍自定义Android Studio的模板及组件化模板的制作,随后介绍注解提示的使用。

第8章:架构演进。

本章介绍Android工程架构的演进,包括线程工程架构、组件化基础架构、模块化架构、多模板架构,以及进程化架构的原理基础。让读者能对Android架构有更加深入的了解。

读者对象

本书适合以下学习阶段的读者阅读:

? Android进阶学习阶段;

? Android组件化学习阶段;

? Android架构初级学习阶段

? 移动端开发思维哲学学习阶段。

致谢

感谢父母对我的思想启蒙的培育;感谢我的妻子丸子对我写作的鼓励和生活的照顾;感谢我曾经就职的广州三星和现在在职的欢聚时代。感谢Android组件化架构QQ群中的映客科技King、搜狐56夜闪冰、RetroX、亚伦,以及各位同学对我出版书籍内容上的建议。

勘误和互动

如果读者发现本书中文字、代码和图片的信息存在错误或者纰漏,欢迎反馈给我。若是对书中内容或者Android组件化架构存在疑问,可以在我的简书、掘金、QQ群中与我互动,届时会在这些平台发布勘误的信息,并欢迎各位读者的提问和建议。

QQ群:316556016

简书:http://www.jianshu.com/u/cd0fe10b01d2

掘金:https://juejin.im/user/565c6d3100b0acaad47e9050

GitHub:https://github.com/cangwang

苍王

目录

□□章 组件化基础

1.1 你知道组件化吗

1.2 基础组件化架构介绍

1.2.1 依赖

1.2.2 聚合和解耦

1.3 重新认识AndroidManifest

1.3.1 AndroidManifest属性汇总

1.3.2 AndroidManifest属性变更

1.4 你所不知道的Application

1.4.1 Applicaton的基础和作用

1.4.2 组件化Application

1.5 小结

第2章 组件化编程

2.1 本地广播

2.1.1 本地广播基础介绍

2.1.2 使用方法

2.1.3 本地广播源码分析

2.2 组件间通信机制

2.2.1 组件化层级障碍

2.2.2 事件总线

2.2.3 组件化事件总线的考量

2.3 组件间跳转

2.3.1 隐式跳转

2.3.2 ARouter路由跳转

2.3.3 Android路由原理

2.3.4 组件化□佳路由

2.3.5 空类索引

2.4 动态创建

2.4.1 反射基础

2.4.2 反射进阶

2.4.3 反射简化jOOR

2.4.4 动态创建Fragment

2.4.5 动态配置Application

2.5 数据存储

2.5.1 数据的存储方式

2.5.2 组件化存储

2.5.3 组件化数据库

2.6 权限管理

2.6.1 权限机制

2.6.2 组件化权限

2.6.3 动态权限框架

2.6.4 路由拦截

2.7 静态常量

2.7.1 资源限制

2.7.2 组件化的静态变量

2.7.3 R2.java的秘密

2.8 资源冲突

2.8.1 组件化的资源汇合

2.8.2 组件化资源冲突

2.9 组件化混淆

2.9.1 混淆基础

2.9.2 资源混淆

2.9.3 组件化混淆

2.10 多渠道模块

2.10.1 多渠道基础

2.10.2 批量打包

2.10.3 多渠道模块配置

2.11 小结

第3章 组件化优化

3.1 Gradle优化

3.1.1 Gradle基础

3.1.2 版本参数优化

3.1.3 调试优化

3.1.4 资源引用配置

3.1.5 Gradle 4.1依赖特性

3.2 Git组件化部署

3.2.1 submodule子模块

3.2.2 subtree

3.3 小结

第4章 组件化编译

4.1 Gradle编译

4.1.1 Android基础编译流程

4.1.2 Instant Run

4.1.3 更优的Gradle构建策略

4.2 极速增量编译

4.2.1 Freeline的使用

4.2.2 Freeline运行介绍

4.3 小结

第5章 组件化分发

5.1 Activity分发

5.1.1 Activity的生命周期

5.1.2 Acitity分发技术

5.2 Fragment分发

5.2.1 Fragment的生命周期

5.2.2 Fragment分发技术

5.3 View分发

5.3.1 View的生命周期

5.3.2 View分发技术

5.4 依赖倒置

5.4.1 依赖倒置原则

5.4.2 依赖倒置分发

5.5 组件化列表配置

5.5.1 Javapoet语法基础

5.5.2 编译时注解配置

5.5.3 集成配置列表

5.6 加载优化

5.6.1 线程加载

5.6.2 模块懒加载

5.7 层级限制

5.8 多模板设计

5.8.1 多模板注解

5.8.2 脚本配置

5.8.3 动态配置

5.9 小结

第6章 组件化流通

6.1 内部流通

6.1.1 Maven基础

6.1.2 本地缓存

6.1.3 远程仓库

6.2 组件化SDK

6.2.1 SDK基础知识

6.2.2 Python脚本合并

6.2.3 fat-aar脚本合并

6.3 JCenter共享

6.4 小结

第7章 架构模板

7.1 组件化模板

7.1.1 模板基础

7.1.2 模板制作

7.1.3 实时模板

7.1.4 头部注释模板

7.2 注解检测

7.3 小结

第8章 架构演化

8.1 基础架构

8.2 基础组件化

8.3 模块化

8.4 多模板化

8.5 插件化

8.6 进程化

8.7 小结

附录A 思维与架构

作者简介

苍王,欢聚时代 YY高级工程师,具有多年Android研发经验,致力于Android组件化、进程化的研究。活跃于简书、掘金等技术社区,喜欢分享自己的技术经验。


基本信息

商品名称:Android Jetpack应用指南

作者:叶坤|责编:张春雨

定价:79

出版社:电子工业

ISBN号:9787121390555

出版时间:2020-07-01

印刷时间:2020-07-01

开本:16开

内容简介

《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高性能编程》一书。除了码字,他还十分喜爱阿根廷探戈。

目录

第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

前言/序言

开发应用程序就像搭积木。我们对产品业务及功能模块的划分和封装,就像在搭建积木一样。积木不能太大,这不利于修改和拆解;积木也不能太小,否则管理起来可能会很混乱。只有基于稳健、合理的架构,项目才能轻松应对需求的变化,才有可能健康成长。没有良好架构的应用程序,就像没有搭好底座的积木,随着项目复杂度的上升,维护起来会困难重重,工程师会不停地陷入技术债务之中—“积木的倒塌”只是时间问题。

如何把握模块的粒度,在保持模块独立性的同时,又不影响模块间的通信,是全世界优秀的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组件是库的集合,这些库是为协同工作而构建的,你可以单独使用某个组件,也可以混合搭配使用它们。


基本信息

书名:Android进阶解密

定价:99.00元

作者:刘望舒

出版社:电子工业出版社

出版日期:2018-10-01

ISBN:9787121348389

装帧:平装-胶订

开本:16开

编辑推荐

适读人群 :本书适合有一定基础的Android应用开发工程师、Android系统开发工程师和对Android系统源码感兴趣的读者阅读。

1 一线专家和工程师何红辉、徐宜生 、何俊林、安卓巴士技术社区、潘辰星、周泰良、杨强、Tamic联袂力荐

2 《Android进阶解密》基于Android 8.0,将系统源码和应用开发结合讲解,帮助读者融会贯通,破解Android应用开发进阶秘密。

3 《Android进阶之光》介绍了 Android应用开发所需的系统源码知识,还介绍了JNI、ClassLoader、Java虚拟机、DVM&ART虚拟机和Hook等技术,以及热修复原理、插件化原理、绘制优化和内存优化等与应用开发相关的知识点。

内容简介

《Android进阶解密》是一本Android进阶书籍,主要针对Android 8.0系统源码并结合应用开发相关知识进行介绍。《Android进阶解密》共分为17章,从3个方面来组织内容。 一方面介绍Android应用开发所需要掌握的系统源码知识,第二方面介绍JNI、ClassLoader、Java虚拟机、DVM&ART虚拟机和Hook等技术,第三方面介绍热修复原理、插件化原理、绘制优化和内存优化等与应用开发相关的知识点。3个方面有所关联并形成一个知识体系,从而使Android开发者能通过阅读本书达到融会贯通的目的。

《Android进阶解密》适合有一定基础的Android应用开发工程师、Android系统开发工程师和对Android系统源码感兴趣的读者阅读。

作者简介

刘望舒,资深开发工程师,Android进阶二部曲《Android进阶之光》《Android进阶解密》的作者,公众号“刘望舒”的作者,CSDN人气博主。他在博客中构建了“Android相关原创知识体系”,该体系全面且深入并广获好评。他拥有近10年的开发经验和多年的技术管理经验,对Android框架层及应用层开发有着独到、深入的理解。

目录

第1章 Android系统架构 1

1.1 Android系统架构 1

1.2 Android系统源码目录 4

1.2.1 整体结构 4

1.2.2 应用层部分 5

1.2.3 应用框架层部分 6

1.2.4 C/C++程序库部分 6

1.3 源码阅读 7

1.3.1 在线阅读 7

1.3.2 使用Source Insight 9

1.4 本章小结 12

第2章 Android系统启动 13

2.1 init进程启动过程 13

2.1.1 引入init进程 13

2.1.2 init进程的入口函数 14

2.1.3 解析init.rc 17

2.1.4 解析Service类型语句 19

2.1.5 init启动Zygote 20

2.1.6 属性服务 23

2.1.7 init进程启动总结 27

2.2 Zygote进程启动过程 27

2.2.1 Zygote概述 28

2.2.2 Zygote启动脚本 28

2.2.3 Zygote进程启动过程介绍 30

2.2.4 Zygote进程启动总结 38

2.3 SystemServer处理过程 39

2.3.1 Zygote处理SystemServer进程 39

2.3.2 解析SystemServer进程 44

2.3.3 SystemServer进程总结 48

2.4 Launcher启动过程 48

2.4.1 Launcher概述 48

2.4.2 Launcher启动过程介绍 49

2.4.3 Launcher中应用图标显示过程 54

2.5 Android系统启动流程 59

2.6 本章小结 60

第3章 应用程序进程启动过程 61

3.1 应用程序进程简介 61

3.2 应用程序进程启动过程介绍 62

3.2.1 AMS发送启动应用程序进程请求 62

3.2.2 Zygote接收请求并创建应用程序进程 68

3.3 Binder线程池启动过程 75

3.4 消息循环创建过程 78

3.5 本章小结 80

第4章 四大组件的工作过程 81

4.1 根Activity的启动过程 82

4.1.1 Launcher请求AMS过程 82

4.1.2 AMS到ApplicationThread的调用过程 85

4.1.3 ActivityThread启动Activity的过程 94

4.1.4 根Activity启动过程中涉及的进程 99

4.2 Service的启动过程 101

4.2.1 ContextImpl到AMS的调用过程 101

4.2.2 ActivityThread启动Service 103

4.3 Service的绑定过程 110

4.3.1 ContextImpl到AMS的调用过程 111

4.3.2 Service的绑定过程 112

4.4 广播的注册、发送和接收过程 122

4.4.1 广播的注册过程 122

4.4.2 广播的发送和接收过程 127

4.5 Content Provider的启动过程 137

4.5.1 query方法到AMS的调用过程 137

4.5.2 AMS启动Content Provider的过程 143

4.6 本章小结 148

第5章 理解上下文Context 149

5.1 Context的关联类 149

5.2 Application Context的创建过程 151

5.3 Application Context的获取过程 156

5.4 Activity的Context创建过程 156

5.5 Service的Context创建过程 161

5.6 本章小结 163

第6章 理解ActivityManagerService 164

6.1 AMS家族 164

6.1.1 Android 7.0的AMS家族 164

6.1.2 Android 8.0的AMS家族 170

6.2 AMS的启动过程 171

6.3 AMS与应用程序进程 174

6.4 AMS重要的数据结构 176

6.4.1 解析ActivityRecord 177

6.4.2 解析TaskRecord 177

6.4.3 解析ActivityStack 178

6.5 Activity栈管理 181

6.5.1 Activity任务栈模型 181

6.5.2 Launch Mode 182

6.5.3 Intent的FLAG 182

6.5.4 taskAffinity 185

6.6 本章小结 186

第7章 理解WindowManager 187

7.1 Window、WindowManager和WMS 187

7.2 WindowManager的关联类 188

7.3 Window的属性 193

7.3.1 Window的类型和显示次序 193

7.3.2 Window的标志 195

7.3.3 软键盘相关模式 196

7.4 Window的操作 196

7.4.1 系统窗口的添加过程 197

7.4.2 Activity的添加过程 202

7.4.3 Window的更新过程 203

7.5 本章小结 206

第8章 理解WindowManagerService 207

8.1 WMS的职责 207

8.2 WMS的创建过程 209

8.3 WMS的重要成员 217

8.4 Window的添加过程(WMS处理部分) 219

8.5 Window的删除过程 225

8.6 本章小结 230

第9章 JNI原理 231

9.1 系统源码中的JNI 232

9.2 MediaRecorder框架中的JNI 233

9.2.1 Java Framework层的MediaRecorder 233

9.2.2 JNI层的MediaRecorder 234

9.2.3 Native方法注册 235

9.3 数据类型的转换 239

9.3.1 基本数据类型的转换 240

9.3.2 引用数据类型的转换 240

9.4 方法签名 242

9.5 解析JNIEnv 244

9.5.1 jfieldID和jmethodID 245

9.5.2 使用jfieldID和jmethodID 247

9.6 引用类型 249

9.6.1 本地引用 249

9.6.2 全局引用 249

9.6.3 弱全局引用 250

9.7 本章小结 251

第10章 Java虚拟机 252

10.1 概述 252

10.1.1 Java虚拟机家族 253

10.1.2 Java虚拟机执行流程 253

10.2 Java虚拟机结构 254

10.2.1 Class文件格式 255

10.2.2 类的生命周期 256

10.2.3 类加载子系统 257

10.2.4 运行时数据区域 258

10.3 对象的创建 260

10.4 对象的堆内存布局 262

10.5 oop-klass模型 263

10.6 垃圾标记算法 266

10.6.1 Java中的引用 266

10.6.2 引用计数算法 267

10.6.3 根搜索算法 269

10.7 Java对象在虚拟机中的生命周期 270

10.8 垃圾收集算法 271

10.8.1 标记―清除算法 271

10.8.2 复制算法 272

10.8.3 标记―压缩算法 273

10.8.4 分代收集算法 274

10.9 本章小结 275

第11章 Dalvik和ART 276

11.1 Dalvik虚拟机 276

11.1.1 DVM与JVM的区别 276

11.1.2 DVM架构 278

11.1.3 DVM的运行时堆 280

11.1.4 DVM的GC日志 280

11.2 ART虚拟机 281

11.2.1 ART与DVM的区别 281

11.2.2 ART的运行时堆 282

11.2.3 ART的GC日志 283

11.3 DVM和ART的诞生 285

11.4 本章小结 288

第12章 理解ClassLoader 289

12.1 Java中的ClassLoader 289

12.1.1 ClassLoader的类型 289

12.1.2 ClassLoader的继承关系 291

12.1.3 双亲委托模式 292

12.1.4 自定义ClassLoader 295

12.2 Android中的ClassLoader 298

12.2.1 ClassLoader的类型 298

12.2.2 ClassLoader的继承关系 300

12.2.3 ClassLoader的加载过程 302

12.2.4 BootClassLoader的创建 306

12.2.5 PathClassLoader的创建 309

12.3 本章小结 311

第13章 热修复原理 312

13.1 热修复的产生 312

13.2 热修复框架的种类和对比 313

13.3 资源修复 314

13.3.1 Instant Run概述 314

13.3.2 Instant Run的资源修复 315

13.4 代码修复 318

13.4.1 类加载方案 319

13.4.2 底层替换方案 321

13.4.3 Instant Run方案 322

13.5 动态链接库的修复 323

13.5.1 System的load和loadLibarary方法 323

13.5.2 nativeLoad方法分析 327

13.6 本章小结 333

第14章 Hook技术 334

14.1 Hook技术概述 334

14.2 Hook技术分类 336

14.3 代理模式 336

14.3.1 代理模式简单实现 337

14.3.2 动态代理的简单实现 338

14.4 Hook startActivity方法 339

14.4.1 Hook Activity的startActivity方法 340

14.4.2 Hook Context的startActivity方法 343

14.4.3 Hook startActivity总结 344

14.5 本章小结 345

第15章 插件化原理 346

15.1 动态加载技术 346

15.2 插件化的产生 347

15.2.1 应用开发的痛点和瓶颈 347

15.2.2 插件化思想 348

15.2.3 插件化定义 350

15.3 插件化框架对比 351

15.4 Activity插件化 352

15.4.1 Activity的启动过程回顾 352

15.4.2 Hook IActivityManager方案实现 354

15.4.3 Hook Instrumentation方案实现 364

15.4.4 总结 367

15.5 Service插件化 368

15.5.1 插件化方面Service与Activity的不同 368

15.5.2 代理分发实现 370

15.6 ContentProvider插件化 376

15.6.1 ContentProvider的启动过程回顾 376

15.6.2 VirtualApk的实现 377

15.7 BroadcastReceiver的插件化 385

15.7.1 广播插件化思路 386

15.7.2 VirtualApk的实现 386

15.8 资源的插件化 387

15.8.1 系统资源加载 387

15.8.2 VirtualApk实现 389

15.9 so的插件化 390

15.10 本章小结 393

第16章 绘制优化 394

16.1 绘制性能分析 394

16.1.1 绘制原理 395

16.1.2 Profile GPU Rendering 396

16.1.3 Systrace 398

16.1.4 Traceview 404

16.2 布局优化 407

16.2.1 布局优化工具 407

16.2.2 布局优化方法 411

16.2.3 避免GPU过度绘制 419

16.3 本章小结 420

第17章 内存优化 421

17.1 避免可控的内存泄漏 421

17.1.1 什么是内存泄漏 421

17.1.2 内存泄漏的场景 422

17.2 Memory Monitor 428

17.2.1 使用Memory Monitor 429

17.2.2 大内存申请与GC 430

17.2.3 内存抖动 430

17.3 Allocation Tracker 430

17.3.1 使用Allocation Tracker 431

17.3.2 alloc文件分析 431

17.4 Heap Dump 434

17.4.1 使用Heap Dump 434

17.4.2 检测内存泄漏 436

17.5 内存分析工具MAT 438

17.5.1 生成hprof文件 438

17.5.2 MAT分析hprof文件 440

17.6 LeakCanary 448

17.6.1 使用LeakCanary 449

17.6.2 LeakCanary应用举例 449

17.7 本章小结 453


基本信息

书名:Android进阶之光

定价:89.00元

作者:刘望舒

出版社:电子工业出版社

出版日期:2017-06-01

ISBN:9787121315305

装帧:平装-胶订

开本:16开

编辑推荐

适读人群 :本书详细并深入讲解Android开发者必备的和前沿的知识,适合有一定开发基础的开发者阅读,这有助于他们提高技术水平;同时,本书系统的知识体系结构也令高级开发者从中获益良多。

1 业界知名专家邓凡平、张鸿洋、徐宜生、陈国华、李文东联袂力荐

2 《Android进阶之光》基于Android 7.0和Android Studio,对Android开发进阶要点进行深入讲解,为工程师的进阶之路带来指引和光明。

3 《Android进阶之光》是目前市场上详细介绍有关Android新特性、Material Design、网络框架、事件总线、RxJava、依赖注入框架和应用架构设计的难得一见的图书。

内容简介

本书是一本Android进阶类书籍,书中各知识点由浅入深、环环相扣,最终这些知识点形成了一个体系结构。本书共分为11章。第1章介绍Android 5.0到Android 7.0的新特性。第2章介绍Material Design。第3章介绍View体系,包括View的事件分发、工作流程、自定义View等知识点。第4章介绍多线程的知识。第5章介绍网络编程与网络框架的知识。第6章介绍常用的设计模式。第7章介绍事件总线。第8到第10章介绍架构设计所需要的知识点。第11章简单介绍Android系统框架与MediaPlayer框架。本书详细并深入讲解Android开发者必备的和前沿的知识,适合有一定开发基础的开发者阅读,这有助于他们提高技术水平;同时,本书系统的知识体系结构也令高级开发者从中获益良多。

作者简介

  刘望舒

  Android高级工程师,拥有多年开发和技术管理经验,对Android框架层及应用层开发有着深入的理解。热爱技术和分享,连续6年在CSDN发表技术文章,有多篇文章广受好评,并被授予CSDN博客专家称号。此外,他还活跃在简书和掘金。曾在多家知名公司从事Android开发。

目录

第1章 Android新特性 1

1.1 Android 5.0新特性 1

1.1.1 Android 5.0主要新特性概述 1

1.1.2 替换ListView和GridView的RecyclerView 3

1.1.3 卡片CardView 13

1.1.4 3种Notification 18

1.1.5 Toolbar与Palette 23

1.2 Android 6.0新特性 29

1.2.1 Android 6.0主要新特性概述 29

1.2.2 运行时权限机制 30

1.3 Android 7.0新特性 43

1.3.1 Android 7.0主要新特性概述 43

1.3.2 多窗口模式 44

1.4 本章小结 47

第2章 Material Design 48

2.1 Material Design概述 48

2.1.1 核心思想 48

2.1.2 材质与空间 49

2.1.3 动画 49

2.1.4 样式 50

2.1.5 图标 51

2.1.6 图像 51

2.1.7 组件 51

2.2 Design Support Library常用控件详解 54

2.2.1 Snackbar的使用 54

2.2.2 用TextInputLayout实现登录界面 55

2.2.3 FloatingActionButton的使用 60

2.2.4 用TabLayout实现类似网易选项卡的动态滑动效果 61

2.2.5 用NavigationView实现抽屉菜单界面 68

2.2.6 用CoordinatorLayout实现Toolbar隐藏和折叠 74

2.3 本章小结 86

第3章 View体系与自定义View 87

3.1 View与ViewGroup 87

3.2 坐标系 89

3.2.1 Android坐标系 89

3.2.2 View坐标系 90

3.3 View的滑动 91

3.3.1 layout()方法 92

3.3.2 offsetLeftAndRight()与offsetTopAndBottom() 94

3.3.3 LayoutParams(改变布局参数) 95

3.3.4 动画 95

3.3.5 scrollTo与scollBy 96

3.3.6 Scroller 98

3.4 属性动画 99

3.5 解析Scroller 105

3.6 View的事件分发机制 108

3.6.1 源码解析Activity的构成 108

3.6.2 源码解析View的事件分发机制 112

3.7 View的工作流程 119

3.7.1 View的工作流程入口 119

3.7.2 理解MeasureSpec 122

3.7.3 View的measure流程 126

3.7.4 View的layout流程 132

3.7.5 View的draw流程 135

3.8 自定义View 139

3.8.1 继承系统控件的自定义View 140

3.8.2 继承View的自定义View 141

3.8.3 自定义组合控件 147

3.8.4 自定义ViewGroup 152

3.9 本章小结 164

第4章 多线程编程 165

4.1 线程基础 165

4.1.1 进程与线程 165

4.1.2 线程的状态 167

4.1.3 创建线程 168

4.1.4 理解中断 170

4.1.5 安全地终止线程 171

4.2 同步 173

4.2.1 重入锁与条件对象 173

4.2.2 同步方法 175

4.2.3 同步代码块 176

4.2.4 volatile 177

4.3 阻塞队列 183

4.3.1 阻塞队列简介 183

4.3.2 Java中的阻塞队列 184

4.3.3 阻塞队列的实现原理 186

4.3.4 阻塞队列的使用场景 188

4.4 线程池 190

4.4.1 ThreadPoolExecutor 190

4.4.2 线程池的处理流程和原理 192

4.4.3 线程池的种类 193

4.5 AsyncTask的原理 197

4.6 本章小结 203

第5章 网络编程与网络框架 204

5.1 网络分层 204

5.2 TCP的三次握手与四次挥手 205

5.3 HTTP协议原理 207

5.3.1 HTTP简介 207

5.3.2 HTTP请求报文 208

5.3.3 HTTP响应报文 209

5.3.4 HTTP的消息报头 210

5.3.5 抓包应用举例 211

5.4 HttpClient与HttpURLConnection 212

5.4.1 HttpClient 212

5.4.2 HttpURLConnection 216

5.5 解析Volley 218

5.5.1 Volley基本用法 218

5.5.2 源码解析Volley 223

5.6 解析OkHttp 231

5.6.1 OkHttp基本用法 232

5.6.2 源码解析OkHttp 240

5.7 解析Retrofit 255

5.7.1 Retrofit基本用法 255

5.7.2 源码解析Retrofit 261

5.8 本章小结 270

第6章 设计模式 271

6.1 设计模式六大原则 271

6.2 设计模式分类 273

6.3 创建型设计模式 273

6.3.1 单例模式 274

6.3.2 简单工厂模式 277

6.3.3 工厂方法模式 279

6.3.4 建造者模式 281

6.4 结构型设计模式 284

6.4.1 代理模式 285

6.4.2 装饰模式 288

6.4.3 外观模式 291

6.4.4 享元模式 295

6.5 行为型设计模式 298

6.5.1 策略模式 298

6.5.2 模板方法模式 301

6.5.3 观察者模式 304

6.6 本章小结 307

第7章 事件总线 308

7.1 解析EventBus 308

7.1.1 使用EventBus 308

7.1.2 源码解析EventBus 314

7.2 解析otto 324

7.2.1 使用otto 324

7.2.2 源码解析otto 327

第8章 函数响应式编程 333

8.1 RxJava基本用法 333

8.1.1 RxJava概述 333

8.1.2 RxJava基本实现 334

8.1.3 RxJava的不完整定义回调 336

8.2 RxJava的Subject 338

8.3 RxJava操作符入门 339

8.3.1 创建操作符 339

8.3.2 变换操作符 340

8.3.3 过滤操作符 344

8.3.4 组合操作符 349

8.3.5 辅助操作符 352

8.3.6 错误处理操作符 355

8.3.7 条件操作符和布尔操作符 357

8.3.8 转换操作符 360

8.4 RxJava的线程控制 362

8.5 RxJava的使用场景 362

8.5.1 RxJava结合OkHttp访问网络 362

8.5.2 RxJava结合Retrofit访问网络 364

8.5.3 用RxJava实现RxBus 368

8.6 RxJava源码解析 370

8.6.1 RxJava的订阅过程 371

8.6.2 RxJava的变换过程 372

8.6.3 RxJava的线程切换过程 376

8.7 本章小结 381

第9章 注解与依赖注入框架 382

9.1 注解 382

9.1.1 注解分类 382

9.1.2 定义注解 384

9.1.3 注解处理器 385

9.2 依赖注入的原理 392

9.2.1 控制反转与依赖注入 392

9.2.2 依赖注入的实现方式 393

9.3 依赖注入框架 395

9.3.1 为何使用依赖注入框架 395

9.3.2 解析ButterKnife 395

9.3.3 解析Dagger2 405

9.4 本章小结 421

第10章 应用架构设计 422

10.1 MVC模式 422

10.2 MVP模式 423

10.2.1 应用MVP模式 424

10.2.2 MVP结合RxJava和Dagger2 431

10.3 MVVM模式 438

10.3.1 解析Data Binding 439

10.3.2 应用Data Binding 457

10.4 本章小结 459

第11章 系统架构与MediaPlayer框架 460

11.1 Android系统架构 460

11.2 Android系统源码目录 463

11.2.1 整体结构 463

11.2.2 应用层部分 464

11.2.3 应用框架层部分 465

11.2.4 C/C++程序库部分 465

11.3 Source Insights使用 466

11.4 MediaPlayer框架 467

11.4.1 Java Framework层的MediaPlayer分析 467

11.4.2 JNI层的MediaPlayer分析 469

11.4.3 Native层的MediaPlayer分析 471

11.5 本章小结 478

后记 479