内容简介:
今天的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
《中国收入分配格局的现状与改革措施》内容简介:经济理论的发展与变化是和经济实践紧密联系的,在我国继续向社会主义市场经济体制
《揭秘跨境电商》是一本系统性、全方位阐述跨境电商的书。全书分为四篇:第一篇介绍跨境电商中的各大平台和独立网站;第二篇从物
Inthisengrossingbook,twoworld-renownedscholarscompareandcontrastthecosmology,sci...
《锋利的jQuery》循序渐进地对jQuery的各种函数和方法调用进行了介绍,读者可以系统地掌握jQuery的DOM操作、事件监听和动画、表单
电商坐拥互联网行业最丰富的用户数据金矿,却很少有人从中挖掘出真金白银。《数据掘金——电子商务运营突围》一书旨在打破这一困
《深入理解InfluxDB:时序数据库详解与实践》内容简介:时序数据库是一种新型技术,主要用于工业互联网软件建设中。近年来,伴随着
『書‧手作:山崎曜的製本書』超乎興趣的復古工藝之作、一本大人風味的手工書13種製書技法.25件佳作實做詳解.5件職人創作欣賞※
《金融风险管理(第二版)》内容简介:随着金融自由化、全球化的发展以及层出不穷的金融创新,金融机构所处的风险环境日益复杂,金
《一图一例BIM钢筋算量》内容简介:本书共五章,第一章从BIM基础知识讲起,逐渐拓展到BIM在建筑行业领域的应用,使读者对BIM技术有
《快乐琴童养成计划》内容简介:本书以钢琴老师的视角,从家长、老师、学生三个方面记录下发生在钢琴教室的故事。这些故事有成功的
AuthorJasonOstranderwalksdevelopersthroughthedifferentchoicesavailableontheirway...
PaulRandwasoneoftheworldsleadinggraphicdesigners.Herehedescribeshisworkwiththesa...
《OpenStack设计与实现》是一本介绍OpenStack设计与实现原理的书。《OpenStack设计与实现》以Juno版本为基础,覆盖了OpenStack的
TheOnlyOfficial,Best-PracticeGuidetoQt4.3ProgrammingUsingTrolltechsQtyoucanbuild...
《通信原理》以有线通信和无线通信为背景,主要介绍通信系统、通信设备的基本概念、原理和技术。《通信原理》的章节体系与实际通
《轻松攒够养老金》内容简介:养老要趁早,养老金怎么攒,多少够? 《轻松攒够养老金》对年轻人关心的养老金问题进行了解答: ·需
《世界前沿技术发展报告2020》内容简介:本书于2020年年初编纂,总结了2019年的技术,并对2020年的发展态势做了预判。书中详细介绍
《自然计算:DNA、量子比特和智能机器的未来》介绍了16位致力于解决计算领域前沿问题的科学家,他们分别在科学、工程金融等领域从
《计算机体系结构》是一本强调从实践中学理念的计算机体系结构的教材。作者结合自身从事国产龙芯高性能通用处理器研制的实践,以
《儒匠——程泰宁传》内容简介:他痴迷武侠小说,却误打误撞地闯入建筑殿堂;他是第一位也是至今唯一一位被国外知名出版机构收入世