内容简介:
今天的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到3岁是孩子开始养活教育的好时机。带领孩子做
《前端性能揭秘》内容简介:本书主要介绍用于指导前端性能优化工作的通用优化方法,从网络、浏览器、构建工具、跨端技术和CDN等方面
数据库系统工程师教程(第2版)—全国计算机技术与软件专业技术资格(水平)考试指定用书 本书特色 《数据库系统工程师教程(第2版)》作为中级职称的软考指定教材,具...
《“清”眼看世界:研究生海外社会实践成果集》内容简介:本书梳理了清华大学研究生海外社会实践近五年来的优秀实践成果,精选了来
计算机组装与维护教程 节选 本书根据应用型本科计算机科学与相关专业的培养目标、特点和要求,详细介绍了*新的计算机系统的各组件,包括主板、CPU、内存、显卡、外设...
《意志力》内容简介:《意志力》是一本风靡全世界的心理学通俗读物。被拖延症困扰?面临情感纠葛?减肥总是反弹?控制不住购物的冲
《苏东坡传:诗酒趁年华,烟雨任平生》内容简介:大文豪、美食家、工程师…… 乐天派、真性情、热心肠…… 苏东坡的一生标签很多,
《超300款系列:吃不胖的下饭菜》内容简介:发胖并不是源于吃多了,关键在于怎么吃,吃什么。有些可口美味的下饭菜吃了真的不会发胖
《我家走出四博士》内容简介:本书是一部包括教育智慧、教育艺术的家庭教育指导书。本书作者李振霞在养育四个孩子的漫长过程中不断
北欧文化有种很特殊的味道。美国洛杉矶艺术设计学院终身教授王受之用独特的见解和宽阔的视野角度、深入浅出的笔触,将北欧本身的
《音乐漫游记:带着古典音乐去旅行》内容简介:每一首音乐作品,都是一幅鲜活的游历图,诉说了音乐家自己的生活故事;每一首音乐作
《大写的历史:被遗忘的历史事件》内容简介:《左传》既然是战国初期才正式成书,而赵氏宗族又是晋国政治权力博弈中的最后胜利者,
《程序员必会的40种算法》内容简介:本书致力于利用算法求解实际问题。第1部分介绍算法的核心内容,探讨什么是算法、如何设计算法,
《贡布里希的艺术史论》内容简介:贡布里希是20世纪积极推动欧美学术界从艺术的视觉研究转向艺术文化研究的倡导者之一。在20世纪的
《财务管理实务教程》内容简介:本书共分为十个项目,分别是:项目一财务管理基础认知,项目二货币时间价值与风险价值分析,项目三
可视化绘图制作方法与技巧 本书特色 在做演示、咨询、主持或培训等各种商务活动中,怎样把抽象的问题和概念转变成视觉语言来快速打动受众呢?这就是《可视化绘图制作技巧...
SEO教程-搜索引擎优化入门与进阶-第2版 本书特色 seochatorg站长实战经验结晶,网站推广**手册,内容系统、全面、深入,贴近实战。SEO教程-搜索引...
《这个世界就分两种人》内容简介:本书为作者数年来撰写的各类杂文、散文和论说文的合集。文章不长,却极有锐度,往往令读者掩卷深
《企业重组的税会处理与筹划》内容简介:本书内容涵盖了企业重组的所有主要形式,包括债务重组、股权收购、资产收购、企业合并、企
《2020—2021年中国工业技术创新发展蓝皮书(精装版)》内容简介:本书对2020年我国及世界主要国家工业技术创新发展态势、创新热点