内容简介:
今天的Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。本书主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来混合或单独使用Java、C/C++来开发应用。书中还特别讲解了如下内容:
• 一些OpenGL的优化技术以及RenderScript(Android的新特性)的基础知识;
• 利用SDK来优化应用的Java代码的技巧;
• 通过高效使用内存来提升性能的技巧;
• 延长电池使用时间的技巧;
• 使用多线程的时机及技巧;
• 评测剖析代码的技巧。
把本书的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为健壮高效,从而广受用户好评,并最终获得成功。
目 录
第1章 Java代码优化1
1.1 Android如何执行代码1
1.2 优化斐波纳契数列4
1.2.1 从递归到迭代4
1.2.2 BigInteger6
1.3 缓存结果10
1.4 API等级12
1.5 数据结构14
1.6 响应能力17
1.6.1 推迟初始化19
1.6.2 StrictMode19
1.7 SQLite21
1.7.1 SQLite语句21
1.7.2 事务25
1.7.3 查询26
1.8 总结27
第2章 NDK入门28
2.1 NDK里有什么28
2.2 混合使用Java和C/C++代码31
2.2.1 声明本地方法31
2.2.2 实现JNI粘合层32
2.2.3 创建Makefile33
2.2.4 实现本地函数35
2.2.5 编译本地库36
2.2.6 加载本地库37
2.3 Application.mk37
2.3.1 为(几乎)所有设备优化39
2.3.2 支持所有设备40
2.4 Android.mk43
2.5 使用C/C++改进性能45
2.6 本地Acitivity52
2.6.1 构建缺失的库54
2.6.2 替代方案59
2.7 总结60
第3章 NDK进阶61
3.1 汇编61
3.1.1 最大公约数62
3.1.2 色彩转换66
3.1.3 并行计算平均值70
3.1.4 ARM指令74
3.1.5 ARM NEON79
3.1.6 CPU特性80
3.2 C扩展81
3.2.1 内置函数82
3.2.2 向量指令82
3.3 技巧86
3.3.1 内联函数87
3.3.2 循环展开87
3.3.3 内存预读取87
3.3.4 用LDM/STM替换LDR/STD89
3.4 总结89
第4章 高效使用内存90
4.1 说说内存90
4.2 数据类型91
4.2.1 值的比较93
4.2.2 其他算法95
4.2.3 数组排序96
4.2.4 定义自己的类97
4.3 访问内存98
4.4 排布数据100
4.5 垃圾收集104
4.5.1 内存泄漏105
4.5.2 引用106
4.6 API109
4.7 内存少的时候110
4.8 总结111
第5章 多线程和同步112
5.1 线程112
5.2 AsyncTask115
5.3 Handler和Looper118
5.3.1 Handler118
5.3.2 Looper120
5.4 数据类型120
5.5 并发124
5.6 多核125
5.6.1 为多核修改算法126
5.6.2 使用并发缓存129
5.7 Activity生命周期131
5.7.1 传递信息132
5.7.2 记住状态134
5.8 总结137
第6章 性能评测和剖析138
6.1 时间测量138
6.1.1 System.nanoTime()139
6.1.2 Debug.threadCpuTimeNanos()140
6.2 方法调用跟踪141
6.2.1 Debug.startMethodTracing()141
6.2.2 使用Traceview工具142
6.2.3 DDMS中的Traceview144
6.2.4 本地方法跟踪145
6.3 日志147
6.4 总结148
第7章 延长电池续航时间150
7.1 电池150
7.2 禁用广播接收器155
7.3 网络159
7.3.1 后台数据159
7.3.2 数据传输160
7.4 位置162
7.4.1 注销监听器163
7.4.2 更新频率164
7.4.3 多种位置服务164
7.4.4 筛选定位服务166
7.4.5 最后已知位置168
7.5 传感器169
7.6 图形170
7.7 提醒171
7.8 WakeLock173
7.9 总结175
第8章 图形176
8.1 布局优化176
8.1.1 相对布局178
8.1.2 合并布局181
8.1.3 重用布局183
8.1.4 ViewStub184
8.2 布局工具185
8.2.1 层级视图186
8.2.2 layoutopt186
8.3 OpenGL ES186
8.3.1 扩展187
8.3.2 纹理压缩189
8.3.3 Mipmap193
8.3.4 多APK194
8.3.5 着色195
8.3.6 场景复杂性195
8.3.7 消隐195
8.3.8 渲染模式195
8.3.9 功耗管理195
8.4 总结196
第9章 RenderScript197
9.1 概览197
9.2 Hello World199
9.3 Hello Rendering202
9.3.1 创建渲染脚本202
9.3.2 创建RenderScriptGL Context203
9.3.3 展开RSSurfaceView204
9.3.4 设置内容视图204
9.4 在脚本中添加变量205
9.5 HelloCompute208
9.5.1 Allocation209
9.5.2 rsForEach210
9.5.3 性能213
9.6 自带的RenderScript API214
9.6.1 rs_types.rsh215
9.6.2 rs_core.rsh217
9.6.3 rs_cl.rsh219
9.6.4 rs_math.rsh222
9.6.5 rs_graphics.rsh223
9.6.6 rs_time.rsh224
9.6.7 rs_atomic.rsh225
9.7 RenderScript与NDK对比225
9.8 总结226
《数码摄影后期高手之路》内容简介:本书是国内知名的图形图像专家——李涛多年在摄影后期教学实践的总结。他通过拍摄及后期操作前
属性拓扑理论及其应用 本书特色 本书以属性拓扑理论及其应用为主线,系统地介绍了属性拓扑基本理论及其应用的*研究成果. 全书分为基础知识、概念计算、关联分析、记忆...
《网页设计与配色经典案例解析(第2版)(全彩)》以介绍色彩知识为主线,从色彩原理入手,辅以大量优秀网页便于读者对色彩搭配的理解
《敏捷软件开发(珍藏版)》内容简介:本书作为敏捷软件开发的里程碑之作,重点介绍了敏捷软件开发的原则、模式和实践。全书共6部分
Ajax作为流行的Web开发技术,由于其具有异步的数据请求和Web页面数据的无刷新改变等特性,广泛应用于Web2.0与富客户端口Web中。本
《面向21世纪高等学校信息工程类专业规划教材·通信原理与通信技术(第2版)》全面、系统地介绍了现代通信原理、数据通信原理以及相
Computersciencestudieshowtodescribe,predictpropertiesof,andefficientlyimplementi...
生物群智计算与机器学习 本书特色 作为人工智能领域的一个重要分支,生物群智计算与机器学习已经引起越来越多**外研究者的关注,成为前沿性的热点研究领域,在理论和应...
《野地灵光:我住精神病院的日子》内容简介:身患重度抑郁症十余年的作家李兰妮,终于下决心住进了精神病院。本书记录了作者住院治
《区域现代化基本理论研究》内容简介:本书概述了区域现代化探索的一些基本理论问题,包括政治区域现代化、经济区域现代化、文化区
本书重点论述数字通信的技术基础和最新应用。全书共分15章,详细阐述了数字通信系统的基本信号变换、信号处理步骤、基带信号及高
《Python人工智能项目实战》内容简介:本书可帮助你结合深度学习和强化学习来构建智能而且实用的基于人工智能的系统。本书涉及的项
《城乡一体化发展》内容简介:这是一本全方位展现苏南地区在现代化建设中城乡一体化发展成就的重要著作。在本书作者秉持客观公正的
《实战移动互联网营销》内容简介:移动互联网的兴起,又为企业带来了新的挑战与机遇!越来越多的人,看到了移动互联网的价值与前景
《一目了然Web软件显性设计之路》通过深入浅出地讲解与丰富的实际案例,帮助读者理解、掌握显性设计的精髓,可轻松熟练地设计出简
《价值发现》内容简介:市场上关于价值投资的图书多如牛毛,但绝大部分偏于理念阐述而缺乏实战案例,读者即便理解了价值投资理念,
《有没有一首歌让你热泪盈眶》内容简介:每个人的生命中,都有一座青春的巢。少年的巢在美梦里,中年的巢在回忆里,而青年的巢在手
当今学术界对线上交流、用户创建内容以及共享媒体等内容依然采取忽视的态度,甚至禁止在媒体以及学校中传播和教授,但数字文化的
本书系统全面地介绍了SNS的概念和理论基础、SNS的发展和现状、SNS热点产品及其设计、开放平台、APP应用开发、SNS网站的运营、SNS
云计算落地已成事实。从前几年的概念普及,到如今越来越多的企业将业务迁移至云上,云计算正在改变整个社会的信息资源使用观念和