登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 2717|回复: 12

Android图书推荐—— Android开发进阶 从小工到专家

[复制链接]

0

主题

0

帖子

-10万

安币

VIP3

签到达人活跃会员推广达人优秀版主元老勋章明星会员

发表于 2016-7-28 16:02:44 | 显示全部楼层 |阅读模式

编辑推荐

阿里巴巴高级工程师、CSDN博客专家、畅销书作者撰写,百度、腾讯等专家推荐的精品图书

一本只有干货,绝无赘述的好书

结合作者多年开发经验的总结,把作者以前开发走过的坑和陷阱讲解出来,看了以后可以少走很多弯路,提升自己的开发能力很快,抓住开发的痛点和需求讲解内容,使读者阅读后很有成就感。

除了全面讲解了Android开发知识外,还对单元测试、代码规范、版本控制、重构、架构等重要知识点进行了讲解,使得读者在深入技术的同时开阔眼界,能够以更专业的方式设计应用软件,完成从只会实现功能的“码农”到软件工程师、设计师的过渡。




内容简介

本书是一本专门介绍Android开发的图书。书中首先对Android开发的核心知识点进行深入讲解,然后介绍单元测试、代码规范、版本控制、重构、架构等重要的知识,使得读者在深入掌握技术的同时也帮助他们开阔眼界,且能够以更专业的方式设计应用软件,完成从只会实现功能的初级程序员到软件工程师、设计师的转变。

本书的主要内容为:构成Android系统基石的四大组件、创造出丰富多彩的UI设计的控件、保证App流畅的多线程开发、必知必会的HTTP网络请求应用、数据存储的核心SQLite数据库、让程序的性能优化、让程序更整洁的代码规范、管理程序的好帮手Git版本控制,以及需要掌握的高级技术,如单元测试、六大原则与设计模式、重构和综合实战等。

本书适合Android开发初学者、程序员学习,也适合作为大中专院校相关专业的师生用书和培训学校的教材。




作者简介

何红辉 : 前友盟(阿里巴巴集团)Android工程师,CSDN博客专家,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享。Android事件总线开源库(AndroidEventBus)、Colorful作者,开发技术前线站长。




目录

第1章 Android的构成基石—四大组件 1

1.1 Activity 1

1.1.1 Activity的构成 3

1.1.2 Activity的4种启动模式 5

1.1.3 FragmentActivity与Fragment 7

1.2 Service与AIDL 8

1.2.1 普通Service 8

1.2.2 IntentService 9

1.2.3 运行在前台的Service 10

1.2.4 AIDL(Android接口描述语言) 11

1.3 Broadcast(广播) 17

1.3.1 普通广播 17

1.3.2 有序广播 18

1.3.3 本地广播 19

1.3.4 sticky广播 19

1.4 ContentProvider(外共享数据) 19

1.5 小结 26

第2章 创造出丰富多彩的UI—

View与动画 27

2.1 重要的View控件 27

2.1.1 ListView与GridView 27

2.1.2 数据展示更好的实现——

RecyclerView 32

2.1.3 让页面显示更流畅——ViewPager 33

2.2 必须掌握的最重要的技能—

自定义控件 35

2.2.1 最为自由的一种实现——自定义View 36

2.2.2 View的尺寸测量 38

2.2.3 Canvas与Paint(画布与画笔) 42

2.2.4 自定义ViewGroup 45

2.3 Scroller的使用 46

2.4 让应用更精彩—动画 56

2.4.1 帧动画 57

2.4.2 补间动画 58

2.4.3 属性动画 60

2.4.3.1 属性动画的核心类——

ValueAnimator 60

2.4.3.2 对任意属性进行动画操作——

Object Animator 61

2.4.3.3 实现丰富多彩的动画效果——

AnimatorSet 62

2.4.3.4 动画执行时间——TypeEvaluator与TimeInterpolator 63

2.5 小结 66

第3章 保证App流畅的关键因素—

多线程 67

3.1 Android中的消息机制 67

3.1.1 处理消息的手段——Handler、Looper与MessageQueue 67

3.1.2 在子线程中创建Handler为何

会抛出异常 72

3.2 Android中的多线程 73

3.2.1 多线程的实现——Thread和Runnable 73

3.2.2 线程的wait、sleep、join和

yield 74

3.2.3 与多线程相关的方法——Callable、Future和FutureTask 78

3.2.4 构建服务器应用程序的有效

方法——线程池 81

3.2.4.1 启动指定数量的线程——

ThreadPoolExecutor 82

3.2.4.2 定时执行一些任务——Scheduled ThreadPoolExecutor 85

3.2.4.3 线程池的使用准则 86

3.2.5 同步集合 87

3.2.5.1 程序中的优化策略——

CopyOnWriteArrayList 87

3.2.5.2 提高并发效率——

ConcurrentHashMap 88

3.2.5.3 有效的方法——

BlockingQueue 88

3.2.6 同步锁 89

3.2.6.1 同步机制关键字——

synchronized 89

3.2.6.2 显示锁—— ReentrantLock与

Condition 90

3.2.6.3 信号量Semaphore 93

3.2.6.4 循环栅栏CyclicBarrier 94

3.2.6.5 闭锁CountDownLatch 95

3.2.7 创建异步任务更简单——

AysncTask的原理 97

3.2.7.1 AsyncTask的实现基本原理 97

3.2.7.2 实现一个简单的AsyncTask 105

3.3 小结 108

第4章 HTTP网络请求 109

4.1 HTTP网络请求原理 109

4.1.1 HTTP的请求方式 110

4.1.1.1 GET请求 110

4.1.1.2 POST请求 110

4.1.1.3 PUT请求 111

4.1.1.4 DELETE请求 111

4.1.1.5 HEAD请求 112

4.1.1.6 TRACE请求 112

4.1.1.7 OPTIONS请求 113

4.1.2 HTTP报文格式解析 113

4.1.2.1 响应报文 116

4.1.2.2 常见的请求头部 117

4.1.3 简单模拟HTTP服务器 117

4.2 Android中执行网络请求 126

4.2.1 全面支持HTTP协议——

HttpClient 126

4.2.2 最佳选择——HttpURLConnection 128

4.3 网络框架的设计与实现 130

4.3.1 SimpleNet的基本架构 130

4.3.2 Request类 131

4.3.3 Response类 135

4.3.4 请求队列 136

4.3.5 NetworkExecutor网络执行器 137

4.3.6 执行网络请求的接口——

HttpStack 139

4.3.7 将请求的回调执行到UI线程——

ResponseDelivery 142

4.3.8 手动实现文件上传 144

4.3.8.1 自定义实现MultipartEntity 144

4.3.8.2 SimpleNet中实现文件上传 149

4.4 小结 151

第5章 独特高效的数据存储—SQLite

数据库 152

5.1 SQLite3的基本介绍 152

5.1.1 SQLite前端解析系统 153

5.1.2 SQLite后端引擎 154

5.2 SQLite中的SQL语句 154

5.2.1 创建数据库 154

5.2.2 创建表 154

5.2.3 插入数据 159

5.2.4 select语句 161

5.2.5 update语句 168

5.2.6 delete语句 169

5.2.7 修改表 169

5.2.8 创建索引 170

5.2.9 创建视图 171

5.2.10 创建触发器 171

5.2.11 drop命令 172

5.3 Android中的数据库开发 173

5.3.1 数据库基本类型与接口 173

5.3.2 Android数据库使用示例 177

5.3.3 数据库升级 181

5.3.4 Android中数据库的异步操作 181

5.4 数据库框架ActiveAndroid的使用与

基本原理 184

5.4.1 使用ActiveAndroid 184

5.4.2 数据库升级 188

5.4.3 基本原理 189

5.5 小结 196

第6章 让程序更优秀的技术—性能

优化 197

6.1 布局优化 197

6.1.1 include布局 197

6.1.2 merge标签 201

6.1.3 ViewStub视图 204

6.1.4 减少视图树层级 209

6.2 内存优化 211

6.3 内存泄漏 216

6.3.1 使用 Memory Monitor 216

6.3.2 内存泄漏检测利器——

LeakCanary 218

6.4 性能优化 222

6.4.1 过度绘制 222

6.4.2 Android 图形渲染 223

6.4.3 数据采集和分析工具——

TraceView 227

6.5 小结 231

第7章 装点程序“门面”—代码规范 232

7.1 代码规范的第一个重点—排版 232

7.1.1 代码缩进 232

7.1.2 长句分割 233

7.1.3 一句一行 233

7.1.4 大括号 233

7.1.5 空行分隔 234

7.1.6 空行分隔 234

7.1.7 数据与函数的排布 235

7.1.8 修饰词顺序 235

7.2 注释 235

7.2.1 类注释 236

7.2.2 注释的位置 236

7.2.3 函数的注释 237

7.2.4 异常的注释 237

7.3 命名 238

7.3.1 包的命名 238

7.3.2 类与接口的命名 238

7.3.3 函数命名 238

7.3.4 setter和getter 238

7.3.5 字段名 239

7.3.6 字段名 239

7.4 编码建议 239

7.4.1 beak语句 239

7.4.2 覆写时添加@Override 239

7.4.3 指定集合中的元素类型 240

7.4.4 显示指明操作符优先级 240

7.5 小结 240

第8章 让不断升级的系统更好管理—

Git版本控制 241

8.1 Git起源 243

8.2 Git基本原理 243

8.2.1 直接记录快照,而非差异

比较 243

8.2.2 近乎所有操作都是本地执行 244

8.2.3 时刻保持数据完整性 245

8.2.4 多数操作仅添加数据 245

8.2.5 文件的3种状态 245

8.3 Git基本配置 246

8.4 Git基本命令 247

8.4.1 进行版本控制的第一步——

Git init 248

8.4.2 常用的版本控制命令——

Git status 248

8.4.3 添加到追踪列表中——Git add 248

8.4.4 提交——Git commit 249

8.4.5 查看项目历史记录——Git log 250

8.4.6 下载程序——Git clone 250

8.4.7 不同分支——Git branch 251

8.4.8 签出一个分支——Git checkout 251

8.4.9 合并分支——Git merge 253

8.4.10 解决冲突 254

8.4.11 为版本打一个标签——Git tag 255

8.4.12 帮助文档——Git help 256

8.5 项目协作—GitHub 256

8.5.1 SSH key配置 257

8.5.2 项目托管——it remote 258

8.5.3 将项目推送到远程仓库——

Git push 259

8.5.4 更新最代码——Git pull 260

8.5.5 Giti gnore忽略文件 261

8.5.6 Fork 加Pull request多人协作

模式 262

第9章 开发人员必备的技能—

单元测试 267

9.1 什么是单元测试 267

9.2 为什么要做单元测试 267

9.3 不写单元测试的借口 268

9.4 如何写单元测试 269

9.4.1 第一个单元测试 269

9.4.2 Junit简介 272

9.4.2.1 Junit执行流程 273

9.4.2.2 Junit的断言和失败提示 273

9.4.2.3 运行多个测试类——

TestSuite 274

9.5 测试哪些内容 275

9.5.1 边界条件 275

9.5.2 覆盖执行路径 275

9.6 模拟所需的功能模块—Mock

对象 278

9.6.1 手动Mock对象 278

9.6.2 使用Mockito库 279

9.6.2.1 验证某些行为 280

9.6.2.2 如何做一些测试桩(Stub) 280

9.6.2.3 参数匹配器 281

9.6.2.4 验证函数的确切调用次数、

最少调用、从未调用 281

9.6.2.5 确保交互操作没有执行

在Mock对象上 282

9.6.2.6 简化Mock对象的创建 282

9.6.2.7 为连续的调用做测试

桩(stub) 283

9.6.2.8 为回调做测试桩 283

9.6.2.9 doReturn()、doThrow()、

doAnswer()、doNothing()

和doCallRealMethod()系列

方法的运用 283

9.6.2.10 监控真实对象 284

9.6.2.11 为下一步的断言捕获参数 285

9.6.2.12 综合示例演练 285

9.7 Android中的单元测试 288

9.7.1 第一个单元测试 288

9.7.2 使用Instrumentation测试 290

9.7.2.1 需要Context的测试用例 290

9.7.2.2 测试Activity 290

9.7.2.3 测试Service 293

9.7.2.4 测试ContentProvider 295

9.8 测试驱动开发(TDD)简介 298

9.9 小结 300

第10章 六大原则与设计模式 301

10.1 面向对象六大原则 301

10.1.1 单一职责原则 301

10.1.2 里氏替换原则 302

10.1.3 依赖倒置原则 304

10.1.4 开闭原则 304

10.1.5 接口隔离原则 306

10.1.6 迪米特原则 308

10.2 设计模式 309

10.3 避免掉进过度设计的怪圈 310

10.4 反模式 311

10.5 小结 311

第11章 使系统适应变化—重构 312

11.1 为什么要重构 312

11.2 什么时候重构 313

11.3 常用的重构手法 313

11.3.1 提取子函数 313

11.3.2 上移函数到父类 316

11.3.3 下移函数到子类 318

11.3.4 封装固定的调用逻辑 320



11.3.5 使用泛型去除重复逻辑 320

11.3.6 使用对象避免过多的参数 322

11.3.7 重构的支柱——转移函数 324

11.3.8 将类型码的转为状态模式 326

11.3.9 什么也不做的对象——NullObject

模式 329

11.3.10 使类保持“苗条身材”——分解“胖”类型 331

11.4 小结 334

第12章 从码农历练成工程师—

综合实战 335

12.1 项目需求 335

12.2 第一版实现 336

12.3 第一版存在的问题与重构 352

12.3.1 类型重命名 352

12.3.2 去除重复代码 353

12.3.3 简化复杂的函数 356

12.3.4 明确职责与降低耦合 358

12.4 降低复杂性—MVP架构 362

12.5 开启单元测试之路—

添加单元测试 367

12.5.1 创建测试工程 367

12.5.2 测试网络请求解析类 369

12.5.3 测试数据库操作类 371

12.5.4 测试业务逻辑Presenter 374

12.5.5 模拟对象 375

12.5.6 更多测试 377

12.6 小结 378








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1

主题

9131

帖子

2924

安币

Android大神

Rank: 6Rank: 6

发表于 2016-7-28 16:03:48 | 显示全部楼层
写的真的很不错

21

主题

9383

帖子

2062

安币

Android大神

Rank: 6Rank: 6

发表于 2016-7-28 16:08:18 | 显示全部楼层
不错不错,楼主辛苦了。。。

1

主题

9293

帖子

2565

安币

Android大神

Rank: 6Rank: 6

发表于 2016-7-28 16:18:58 | 显示全部楼层
感谢大神~

0

主题

9187

帖子

2917

安币

Android大神

Rank: 6Rank: 6

发表于 2016-7-28 16:28:49 | 显示全部楼层
感谢分享,楼主V5~

465

主题

9829

帖子

827

安币

代码手工艺人

Rank: 4

发表于 2016-7-28 16:35:59 | 显示全部楼层
膜拜大神~

7

主题

9850

帖子

2346

安币

Android大神

Rank: 6Rank: 6

发表于 2016-7-28 17:00:32 | 显示全部楼层
不错不错,楼主辛苦了。。。

0

主题

14

帖子

18

安币

初级码农

Rank: 1

发表于 2016-7-29 08:59:50 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表