内容简介:
今天的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
AutoCAD2013完全学习手册 本书特色 《autocad2013完全学习手册》基于autocad2013版本,详细讲解了autocad的各项功能。《aut...
《爱自己是一辈子的修行》内容简介:现代女性聪明、能干、出色、体贴、要求高、效率高,却活得越来越精神紧张。身心不协调,令自己
《中国历史研究法》内容简介:《中国历史研究法》是继梁氏《新史学》后又一杰作,系以传统史学所积累的方法为基础,结合当时西方史
《西安史话》内容简介:本书只是对西安厚重历史的故事呈现,举重若轻;只是对西安3100多年建城史和1100多年建都史的粗线勾勒,挂一
从设计到印刷Photoshop CS5平面设计师必读-配1张DVD光盘 内容简介 魏薇等编著的《从设计到印刷(photoshopcs5平面设计师必读)》以通俗的...
XML基础教程 本书特色 XML是由万维网联盟定义的一种语言,是表示结构化数据的行业标准,使得Internet上的数据相互交流更方便,让文件的内容更加显而易懂。...
本书是一本为PHP初学者量身定制的秘籍。本书由浅入深地介绍了PHP语言,通过对书中的留言版、投票系统和CMS内容管理系统这些项目开
林桂岚在她的上一本书《设计,不安于室》中提到:落入设计圈的人都具有浪漫情怀。而在这本《挑食的设计》中她则强调被设计圈住的
《开源硬件创客》内容简介:本书共分18章,前3章是本书的基础章节,主要介绍了树莓派的一些基本情况和基本操作,来让读者了解树莓派
《快乐琴童养成计划》内容简介:本书以钢琴老师的视角,从家长、老师、学生三个方面记录下发生在钢琴教室的故事。这些故事有成功的
《“智能+”制造:企业赋能之路》内容简介:本书将“智能+”赋能制造诠释为“互联网+”“大数据+”和“人工智能+”制造,即新一代信
《直播合规管理手册》内容简介:网络直播行业的健康发展不仅需要国家相关部门的严格监管,同时也需要相关从业者树立合规意识,约束
当前正在全球兴起的数字网络是一种能极大改变城市面貌的基础设施。这一全新的基础设施将产生新型的社会关系,以此为基础,一种更
《IIS7开发与管理完全参考手册》的作者包括了四位微软公司MVP。《IIS7开发与管理完全参考手册》详细说明了如何有效地使用IIS7提供
《纸品与平面设计》是为任何一位在涉及用纸创作和实现过程的设计师而准备的一本综合性的设计书籍,它由两个关键的部分构成;设计
ThedesignersJasperMorrisonandNaotoFukasawahavecompiled204everydayobjectsinsearch...
《写给架构师的Linux实践》内容简介:本书首先概述Linux项目的设计方法,然后讲解在设计此类项目时,所要注重的核心理念,以及在用
《童话青格里》内容简介:一段艰难的归乡路,开启了一个平凡少女坎坷而又传奇的一生。一位伟大的母亲阿尼帕,在青格里不断播洒着她
《打造人民币离岸产品中心》内容简介:香港交易所权威作品,系统梳理互联互通、人民币产品新进展! 香港交易所集团行政总裁李小加专
《唯食物可慰藉》内容简介:本书收录与饮食相关的美文22篇,一一讲述生命中的深情故事。一蔬一饭的爱意源远流长,岁月深处的凝望穿