极客云图(www.jkyuntu.com)
极客云图
首页
云图精品
云图文章
云图问答
云图文档
云图书籍
云图源码
登录
首页
当前状态:
当前:
云图书籍
移动开发
Android开发进阶 从小工到专家
第1章
Android的构成基石—四大组件
目录
12
第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.4.3.1 属性动画的核心类——ValueAnimator
2.4.3.2 对任意属性进行动画操作——Object Animator
2.4.3.3 实现丰富多彩的动画效果——AnimatorSet
2.4.3.4 动画执行时间——TypeEvaluator与TimeInterpolator
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.4.1 启动指定数量的线程——ThreadPoolExecutor
3.2.4.2 定时执行一些任务——ScheduledThreadPoolExecutor
3.2.4.3 线程池的使用准则
3.2.5 同步集合
3.2.5.1 程序中的优化策略——CopyOnWriteArrayList
3.2.5.2 提高并发效率——ConcurrentHashMap
3.2.5.3 有效的方法——BlockingQueue
3.2.6 同步锁
3.2.6.1 同步机制关键字——synchronized
3.2.6.2 显示锁——ReentrantLock与Condition
3.2.6.3 信号量Semaphore
3.2.6.4 循环栅栏CyclicBarrier
3.2.6.5 闭锁CountDownLatch
3.2.7 创建异步任务更简单——AysncTask的原理
3.2.7.1 AsyncTask的实现基本原理
3.2.7.2 实现一个简单的AsyncTask
3.3 小结
第4章 HTTP网络请求
4.1 HTTP网络请求原理
4.1.1 HTTP的请求方式
4.1.1.1 GET请求
4.1.1.2 POST请求
4.1.1.3 PUT请求
4.1.1.4 DELETE请求
4.1.1.5 HEAD请求
4.1.1.6 TRACE请求
4.1.1.7 OPTIONS请求
4.1.2 HTTP报文格式解析
4.1.2.1 响应报文
4.1.2.2 常见的请求头部
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.3.8.1 自定义实现MultipartEntity
4.3.8.2 SimpleNet中实现文件上传
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 使用MemoryMonitor
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 添加到追踪列表中——Gitadd
8.4.4 提交——Gitcommit
8.4.5 查看项目历史记录——Gitlog
8.4.6 下载程序——Gitclone
8.4.7 不同分支——Gitbranch
8.4.8 签出一个分支——Gitcheckout
8.4.9 合并分支——Gitmerge
8.4.10 解决冲突
8.4.11 为版本打一个标签——Gittag
8.4.12 帮助文档——Githelp
8.5 项目协作—GitHub
8.5.1 SSHkey配置
8.5.2 项目托管——itremote
8.5.3 将项目推送到远程仓库——Git push
8.5.4 更新最代码——Gitpull
8.5.5 Gitignore忽略文件
8.5.6 Fork加Pullrequest多人协作模式
第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.6.2.1 验证某些行为
9.6.2.2 如何做一些测试桩(Stub)
9.6.2.3 参数匹配器
9.6.2.4 验证函数的确切调用次数、最少调用、从未调用
9.6.2.5 确保交互操作没有执行在Mock对象上
9.6.2.6 简化Mock对象的创建
9.6.2.7 为连续的调用做测试桩(stub)
9.6.2.8 为回调做测试桩
9.6.2.9 doReturn()、doThrow()、doAnswer()、doNothing()和doCallRealMethod()系列方法的运用
9.6.2.10 监控真实对象
9.6.2.11 为下一步的断言捕获参数
9.6.2.12 综合示例演练
9.7 Android中的单元测试
9.7.1 第一个单元测试
9.7.2 使用Instrumentation测试
9.7.2.1 需要Context的测试用例
9.7.2.2 测试Activity
9.7.2.3 测试Service
9.7.2.4 测试ContentProvider
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 设计模式
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 小结
第1章
Android的构成基石—四大组件
疑问?答疑?
关注极客云图了解更多内容