作品简介

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

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

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

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

作品目录

  • 作者简介
  • 内容提要
  • 前言
  • 为什么写这本书
  • 本书的特色
  • 面向的读者
  • 如何阅读本书
  • 读者反馈
  • 代码下载
  • 致谢
  • 第1章 Android的构成基石——四大组件
  • 1.1 Activity
  • 1.1.1 Activity的构成
  • 1.1.2 Activity的4种启动模式
  • 1.1.3 FragmentActivity与Fragment
  • 1.2 Service与AIDL
  • 1.2.1 普通Service
  • 1.2.2 IntentService
  • 1.2.3 运行在前台的Service
  • 1.2.4 AIDL(Android接口描述语言)
  • 1.3 Broadcast(广播)
  • 1.3.1 普通广播
  • 1.3.2 有序广播
  • 1.3.3 本地广播
  • 1.3.4 sticky广播
  • 1.4 ContentProvider(外共享数据)
  • 1.5 小结
  • 第2章 创造出丰富多彩的UI——View与动画
  • 2.1 重要的View控件
  • 2.1.1 ListView与GridView
  • 2.1.2 数据展示更好的实现——RecyclerView
  • 2.1.3 让页面显示更流畅——ViewPager
  • 2.2 必须掌握的最重要的技能——自定义控件
  • 2.2.1 最为自由的一种实现——自定义View
  • 2.2.2 View的尺寸测量
  • 2.2.3 Canvas与Paint(画布与画笔)
  • 2.2.4 自定义ViewGroup
  • 2.3 Scroller的使用
  • 2.4 让应用更精彩——动画
  • 2.4.1 帧动画
  • 2.4.2 补间动画
  • 2.4.3 属性动画
  • 2.5 小结
  • 第3章 保证App流畅的关键因素——多线程
  • 3.1 Android中的消息机制
  • 3.1.1 处理消息的手段——Handler、Looper与MessageQueue
  • 3.1.2 在子线程中创建Handler为何会抛出异常
  • 3.2 Android中的多线程
  • 3.2.1 多线程的实现——Thread和Runnable
  • 3.2.2 线程的wait、sleep、join和yield
  • 3.2.3 与多线程相关的方法——Callable、Future和FutureTask
  • 3.2.4 构建服务器应用程序的有效方法——线程池
  • 3.2.5 同步集合
  • 3.2.6 同步锁
  • 3.2.7 创建异步任务更简单——AysncTask的原理
  • 3.3 小结
  • 第4章 HTTP网络请求
  • 4.1 HTTP网络请求原理
  • 4.1.1 HTTP的请求方式
  • 4.1.2 HTTP报文格式解析
  • 4.1.3 简单模拟HTTP服务器
  • 4.2 Android中执行网络请求
  • 4.2.1 全面支持HTTP协议——HttpClient
  • 4.2.2 最佳选择——HttpURLConnection
  • 4.3 网络框架的设计与实现
  • 4.3.1 SimpleNet的基本架构
  • 4.3.2 Request类
  • 4.3.3 Response类
  • 4.3.4 请求队列
  • 4.3.5 NetworkExecutor网络执行器
  • 4.3.6 执行网络请求的接口——HttpStack
  • 4.3.7 将请求的回调执行到UI线程——ResponseDelivery
  • 4.3.8 手动实现文件上传
  • 4.4 小结
  • 第5章 独特高效的数据存储——SQLite数据库
  • 5.1 SQLite3的基本介绍
  • 5.1.1 SQLite前端解析系统
  • 5.1.2 SQLite后端引擎
  • 5.2 SQLite中的SQL语句
  • 5.2.1 创建数据库
  • 5.2.2 创建表
  • 5.2.3 插入数据
  • 5.2.4 select语句
  • 5.2.5 update语句
  • 5.2.6 delete语句
  • 5.2.7 修改表
  • 5.2.8 创建索引
  • 5.2.9 创建视图
  • 5.2.10 创建触发器
  • 5.2.11 drop命令  
  • 5.3 Android中的数据库开发
  • 5.3.1 数据库基本类型与接口
  • 5.3.2 Android数据库使用示例
  • 5.3.3 数据库升级
  • 5.3.4 Android中数据库的异步操作
  • 5.4 数据库框架ActiveAndroid的使用与基本原理
  • 5.4.1 使用ActiveAndroid
  • 5.4.2 数据库升级
  • 5.4.3 基本原理
  • 5.5 小结
  • 第6章 让程序更优秀的技术——性能优化
  • 6.1 布局优化
  • 6.1.1 include布局
  • 6.1.2 merge标签
  • 6.1.3 ViewStub视图
  • 6.1.4 减少视图树层级
  • 6.2 内存优化
  • 如何管理内存
  • 6.3 内存泄漏
  • 6.3.1 使用Memory Monitor
  • 6.3.2 内存泄漏检测利器——LeakCanary
  • 6.4 性能优化
  • 6.4.1 过度绘制
  • 6.4.2 Android图形渲染
  • 6.4.3 数据采集和分析工具——TraceView
  • 6.5 小结
  • 第7章 装点程序“门面”——代码规范
  • 7.1 代码规范的第一个重点——排版
  • 7.1.1 代码缩进
  • 7.1.2 长句分割
  • 7.1.3 一句一行
  • 7.1.4 大括号
  • 7.1.5 空行分隔
  • 7.1.6 空行分隔
  • 7.1.7 数据与函数的排布
  • 7.1.8 修饰词顺序
  • 7.2 注释
  • 7.2.1 类注释
  • 7.2.2 注释的位置
  • 7.2.3 函数的注释
  • 7.2.4 异常的注释
  • 7.3 命名
  • 7.3.1 包的命名
  • 7.3.2 类与接口的命名
  • 7.3.3 函数命名
  • 7.3.4 setter和getter
  • 7.3.5 字段名
  • 7.3.6 字段名
  • 7.4 编码建议
  • 7.4.1 beak语句
  • 7.4.2 覆写时添加@Override
  • 7.4.3 指定集合中的元素类型
  • 7.4.4 显示指明操作符优先级
  • 7.5 小结
  • 第8章 让不断升级的系统更好管理——Git版本控制
  • 8.1 Git起源
  • 8.2 Git基本原理
  • 8.2.1 直接记录快照,而非差异比较
  • 8.2.2 近乎所有操作都是本地执行
  • 8.2.3 时刻保持数据完整性
  • 8.2.4 多数操作仅添加数据
  • 8.2.5 文件的3种状态
  • 8.3 Git基本配置
  • 8.4 Git基本命令
  • 8.4.1 进行版本控制的第一步——Git init
  • 8.4.2 常用的版本控制命令——Git status
  • 8.4.3 添加到追踪列表中——Git add
  • 8.4.4 提交——Git commit
  • 8.4.5 查看项目历史记录——Git log
  • 8.4.6 下载程序——Git clone
  • 8.4.7 不同分支——Git branch
  • 8.4.8 签出一个分支——Git checkout
  • 8.4.9 合并分支——Git merge
  • 8.4.10 解决冲突
  • 8.4.11 为版本打一个标签——Git tag
  • 8.4.12 帮助文档——Git help
  • 8.5 项目协作——GitHub
  • 8.5.1 SSH key配置
  • 8.5.2 项目托管——it remote
  • 8.5.3 将项目推送到远程仓库——Git push
  • 8.5.4 更新最代码——Git pull
  • 8.5.5 Giti gnore忽略文件
  • 8.5.6 Fork加Pull request多人协作模式
  • 第9章 开发人员必备的技能——单元测试
  • 9.1 什么是单元测试
  • 9.2 为什么要做单元测试
  • 9.3 不写单元测试的借口
  • 9.4 如何写单元测试
  • 9.4.1 第一个单元测试
  • 9.4.2 Junit简介
  • 9.5 测试哪些内容
  • 9.5.1 边界条件
  • 9.5.2 覆盖执行路径
  • 9.6 模拟所需的功能模块——Mock对象
  • 9.6.1 手动Mock对象
  • 9.6.2 使用Mockito库
  • 9.7 Android中的单元测试
  • 9.7.1 第一个单元测试
  • 9.7.2 使用Instrumentation测试
  • 9.8 测试驱动开发(TDD)简介
  • 9.9 小结
  • 第10章 六大原则与设计模式
  • 10.1 面向对象六大原则
  • 10.1.1 单一职责原则
  • 10.1.2 里氏替换原则
  • 10.1.3 依赖倒置原则
  • 10.1.4 开闭原则
  • 10.1.5 接口隔离原则
  • 10.1.6 迪米特原则
  • 10.2 设计模式
  • 模式的4个要素
  • 10.3 避免掉进过度设计的怪圈
  • 10.4 反模式
  • 10.5 小结
  • 第11章 使系统适应变化——重构
  • 11.1 为什么要重构
  • 11.2 什么时候重构
  • 11.3 常用的重构手法
  • 11.3.1 提取子函数
  • 11.3.2 上移函数到父类
  • 11.3.3 下移函数到子类
  • 11.3.4 封装固定的调用逻辑
  • 11.3.5 使用泛型去除重复逻辑
  • 11.3.6 使用对象避免过多的参数
  • 11.3.7 重构的支柱——转移函数
  • 11.3.8 将类型码的转为状态模式
  • 11.3.9 什么也不做的对象——NullObject模式
  • 11.3.10 使类保持“苗条身材”——分解“胖”类型
  • 11.4 小结
  • 第12章 从码农历练成工程师——综合实战
  • 12.1 项目需求
  • 12.2 第一版实现
  • 12.3 第一版存在的问题与重构
  • 12.3.1 类型重命名
  • 12.3.2 去除重复代码
  • 12.3.3 简化复杂的函数
  • 12.3.4 明确职责与降低耦合
  • 12.4 降低复杂性——MVP架构
  • 12.5 开启单元测试之路——添加单元测试
  • 12.5.1 创建测试工程
  • 12.5.2 测试网络请求解析类
  • 12.5.3 测试数据库操作类
  • 12.5.4 测试业务逻辑Presenter
  • 12.5.5 模拟对象
  • 12.5.6 更多测试
  • 12.6 小结
  • 推荐阅读
  • 看完了
展开全部