Android APP开发实战——从规划到上线全程详解
1 开发APP前的准备事项
1.1 APP适配的硬件
1.2 APP横竖屏界面的选择
1.3 APP适配的操作系统版本
1.4 APP适配的屏幕尺寸
1.5 APP开发样机的选择
1.6 APP内置的图片资源
2 APP产品和设计人员的工作
2.1 编写产品文档时的注意事项
2.2 设计效果图时的注意事项
2.3 APP的切图工作
2.4 点9图简介
2.4.1 点9图
2.4.2 制作工具
2.4.3 注意事项
2.5 产品和设计文档的版本管理
3 APP端和服务器端的协作
3.1 接口设计注意事项
3.2 安全方案
3.2.1 HTTP方法的使用
3.2.2 使用时间戳参数
3.2.3 数据加密
3.2.4 密码的处理
3.2.5 数据的存储
3.3 登录方式
3.3.1 账号+密码
3.3.2 账号+密码+验证码
3.4 登录状态的维持
3.4.1 利用Token实现
3.4.2 利用Cookie实现
3.4.3 利用账号和密码实现
3.5 数据同步方案
3.5.1 文件的同步
3.5.2 地址数据的同步
3.5.3 非地址数据的同步
3.6 业务逻辑的实现
3.7 接口文档的维护
4 字符编码
4.1 字符集
1.ASCII及其扩展字符集
2.ISO-8859-1字符集
3.GB2312字符集
4.BIG5字符集
5.GBK字符集
6.GB18030字符集
7.UCS字符集
8.UNICODE字符集
4.2 字符编码
1.UTF-8
2.UTF-16
3.UTF-8、UTF-16和UTF-32的优缺点
4.3 字节序
5 TCP/IP概述
5.1 协议简介
5.2 TCP和UDP的区别
5.2.1 面向连接服务
5.2.2 无连接服务
6 HTTP网络请求
6.1 HTTP简介
6.1.1 协议
6.1.2 HTTP方法
1.方法
2.GET与POST的区别
6.1.3 HTTP消息
1.请求消息
2.响应消息
6.1.4 HTTP头字段介绍
1.通用头字段
2.请求头字段
3.响应头字段
4.实体头字段
6.1.5 Keep-Alive模式介绍
6.1.6 HTTP状态码简介
6.2 Cookie简介
6.2.1 Cookie
6.2.2 Cookie的设置和发送
6.3 Session简介
6.3.1 Session
6.3.2 SessionID
6.4 短连接与长连接
6.4.1 短连接
6.4.2 长连接
6.4.3 使用场景
1.短连接
2.长连接
6.5 Volley网络库简介
6.5.1 Volley网络库
6.5.2 Volley网络库的使用
7 HTTPS概述
7.1 协议简介
7.2 HTTPS的认证类型
7.2.1 单向认证
7.2.2 双向认证
8 加密简介
8.1 对称加密
8.2 非对称加密
8.3 MD5简介
9 设计模式
9.1 设计模式简介
9.2 面向对象设计原则
9.3 设计模式类别
9.3.1 单例模式
9.3.2 Builder模式
9.3.3 原型模式
9.3.4 工厂方法模式
9.3.5 策略模式
9.3.6 状态模式
9.3.7 命令模式
9.3.8 观察者模式
9.3.9 备忘录模式
9.3.10 迭代器模式
9.3.11 模板方法模式
9.3.12 代理模式
9.3.13 组合模式
9.3.14 适配器模式
9.3.15 外观模式
9.3.16 桥接模式
10 架构模式
10.1 MVC架构
10.2 MVP架构
10.3 MVVM架构
10.4 MVP+VM架构
11 APP架构设计
11.1 基本原则
1.逐层调用原则及单向调用原则
2.针对接口编程,而不是针对实现编程
3.依赖倒置原则
4.封装变化原则
5.开放—关闭原则
6.单一归属原则
11.2 分层设计
11.2.1 三层架构
11.2.2 View层设计
11.2.3 业务逻辑层设计(Presenter)
11.2.4 数据访问层设计(Model)
11.2.5 功能模块设计
1.实体类模块
2.辅助类模块设计
3.三方功能模块设计
11.3 层间通信
11.3.1 通信方式
11.3.2 交互模式
11.4 跨业务模块调用
11.4.1 跨业务模块调用简介
11.4.2 跨业务模块调用方案
12 Activity概述
12.1 Activity启动方式
12.1.1 启动模式
12.1.2 FLAG介绍
12.2 Activity消息路由
12.2.1 设计思路
12.2.2 具体实现
12.3 Activity数据的保存和恢复
12.3.1 临时保存数据和恢复数据
12.3.2 持久保存数据和恢复数据
12.4 Activity数据传递
12.4.1 数据传递媒介
1.通过Intent传递数据
2.使用全局对象传递数据
3.使用单例对象传递数据
4.使用静态变量传递数据
5.使用持久化方式传递数据
6.使用剪切板传递数据
12.4.2 数据传递机制
12.5 BaseActivity设计
12.5.1 应用级别的BaseActivity设计
12.5.2 功能级别的BaseActivity设计
1.定位功能的BaseActivity
2.动画功能和视屏播放功能的BaseActivity
3.具有编辑功能的BaseActivity
13 Service概述
13.1 Service的不同形式
13.2 Service与线程
13.3 IntentService
13.4 前台服务
13.5 服务的生命周期
1.启动服务
2.绑定服务
14 Broadcast概述
14.1 广播机制简介
14.2 BroadcastReceiver
14.2.1 静态注册
14.2.2 动态注册
14.3 广播类型
14.3.1 普通广播(Normal Broadcast)
14.3.2 系统广播(System Broadcast)
14.3.3 有序广播(Ordered Broadcast)
14.3.4 局部广播(Local Broadcast)
14.4 广播的安全性
15 ContentProvider概述
16 Fragment概述
16.1 Fragment简介
16.2 Fragment的创建
16.3 Fragment的懒加载
16.4 Fragment的数据保存和恢复
16.4.1 临时保存数据和恢复
16.4.2 持久保存数据和恢复
16.5 Fragment的使用场景
17 Android权限
17.1 权限分类
17.1.1 Normal Permissions
17.1.2 Dangerous Permissions
17.2 动态权限申请
17.3 兼容性问题
18 Android动画
18.1 帧动画
18.2 View动画
18.3 属性动画简介
18.3.1 属性动画
18.3.2 使用示例
1.纯代码方式实现动画
2.代码和XML文件结合实现动画
18.4 Activity切换动画
19 图片类型
19.1 位图简介
19.1.1 位图
19.1.2 WebP格式
19.2 矢量图简介
20 Android矢量图的使用
20.1 功能简介
20.2 兼容性处理
20.3 Vector语法简介
1.Path指令
2.使用原则
20.4 Vector静态图的使用
1.ImageView中使用矢量图
2.TextView和Button中使用矢量图
20.5 Vector动态图的使用
20.5.1 功能实现
20.5.2 动态Vector兼容性问题
21 Android异常
21.1 异常分类
1.checked exception
2.unchecked exception
21.2 异常处理
21.2.1 使用try…catch…处理异常
21.2.2 使用UncaughtExceptionHandler处理异常
21.2.3 ANR异常的处理
21.3 注意事项
22 Android的本地存储
22.1 内部存储(Internal Storage)
22.1.1 非缓存文件的处理
22.1.2 缓存文件的处理
22.2 外部存储(External Storage)
22.2.1 外部公共存储
22.2.2 外部私有存储
1.非缓存文件的处理
2.缓存文件的处理
22.2.3 使用作用域目录访问
23 ABI管理
23.1 ABI简介
23.2 支持的ABI
23.3 为特定ABI生成代码
23.4 Android系统的ABI管理
23.5 Android系统ABI支持
23.6 安装时自动解压缩原生代码
24 ProGuard混淆
24.1 ProGuard简介
24.2 ProGuard指令介绍
24.3 ProGuard注意事项
24.4 ProGuard相关文件
25 Android Studio使用技巧
25.1 编译打包
25.2 功能宏的使用
25.3 集成SO文件
25.4 模板的定制使用
26 APP缓存处理
26.1 缓存简介
26.2 缓存控制
1.服务器端控制缓存
2.客户端控制缓存
26.3 缓存实现
1.缓存数据的保存
2.缓存数据的更新
26.4 WebView缓存
26.5 缓存注意事项
26.6 清除数据和清除缓存的区别
27 APP性能优化
27.1 减少APP所占空间大小
27.1.1 减少图片所占空间大小
27.1.2 减少音频文件所占空间大小
27.1.3 减少代码所占空间大小
27.1.4 使用APK Analyzer分析APP
1.APK Analyzer简介
2.查看文件和大小信息
3.查看AndroidManifest.xml
4.查看代码和资源实体
5.查看DEX文件
6.比较APK文件
27.1.5 利用工具减少APP大小
27.2 减少APP使用的网络流量
27.3 内存优化
27.3.1 节省内存
27.3.2 防止内存泄露
27.3.3 防止OOM
27.4 UI性能优化
27.5 电量优化
27.6 运行速度优化
27.7 性能优化工具
27.7.1 Android Studio自带工具
27.7.2 Android系统工具
27.7.3 三方工具
28 Log功能设计
28.1 Log输出控制
28.2 注意事项
28.3 Log数据的格式化
28.4 使用AOP技术输出Log
28.4.1 AOP简介
28.4.2 AOP技术的使用
29 APP版本管理
30 APP版本更新功能设计
30.1 功能项
30.1.1 服务器端功能
30.1.2 APP端功能
30.2 APP和服务器交互
31 APP常用功能设计
31.1 启动界面设计
31.1.1 启动界面白屏解决方案
31.1.2 启动界面屏蔽返回按键
31.2 首页设计
31.3 登录功能设计
31.4 商品详情界面设计
31.5 购物车功能设计
31.6 商品展示界面功能设计
31.7 个人中心界面功能设计
31.8 搜索功能设计
31.9 WebView功能设计
31.10 出错提示功能设计
31.11 界面内容隐藏和显示设计
31.12 提示功能设计
31.12.1 三种控件简介
31.12.2 AlertDialog介绍
31.12.3 Toast介绍
31.12.4 Snackbar介绍
31.13 定期执行任务的功能设计
31.13.1 JobScheduler介绍
1.onStartJob 方法
2.jobFinished方法
3.onStopJob方法
31.13.2 JobScheduler的替代方案
31.13.3 注意事项
31.14 全屏模式的功能设计
31.14.1 Lean Back
31.14.2 Immersive
31.15 开机自启动的功能设计
31.15.1 普通模式
31.15.2 直接启动模式
31.15.3 示例代码
31.16 APP快捷图标的功能设计
31.16.1 简介
31.16.2 静态快捷图标
31.16.3 动态快捷图标
31.17 针对Android7.0及更高版本的后台优化方案
31.17.1 对于CONNECTIVITY_ACTION 限制的解决方案
31.17.2 对于ACTION_NEW_PICTURE和ACTION_NEW_VIDEO的限制的解决方案
31.18 服务器接口的单元测试
31.18.1 单元测试
31.18.2 使用MockWebServer进行接口的单元测试
31.19 自动调整文字大小的TextView
31.19.1 Default方式
31.19.2 Granularity方式
31.19.3 Preset Sizes方式
32 代码封装
33 APP测试
1.兼容性测试
2.极限测试
3.网络状况测试
4.权限测试
5.横竖屏模式测试
6.性能测试
7.审核测试
34 项目管理
34.1 项目团队成员
34.2 需求处理
34.3 进度计划
35 Git使用
35.1 Git工具简介
35.1.1 客户端工具
35.1.2 服务器端工具
35.2 Git常用命令
35.3 使用Git的注意事项
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5b3689e4b0d4dc8776d1e3.png)
思维导图在线编辑链接: