内容简介:
今天的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
机器人简史 本书特色 本书从早期机器人说起,讲述了近代机器人的发展历程,介绍了现代机器人的发展情况,描绘了未来机器人的发展图景,并简要概括了世界各主要国家发展机...
《一本书读懂经济新常态》内容简介:无论局势如何变幻莫测,经济形势都备受各界关注,经济工作依然是党的当前所有工作的重心,发展
《忽必烈》内容简介:忽必烈,是中国和蒙古族历史上的重要人物。虽灭亡南宋,一统全国,行用汉法,创建元朝,却又多疑猜忌,贪财谥
这是一本小题大作的书!书中谈的不是令人肃然起敬的建筑和艺术,而是把橡皮圈、马桶刷、胡椒罐和碗盘看待得和建筑、艺术一样认真
Touchandgesturaldeviceshavebeenhailedasnextevolutionarystepinhuman-computerinter...
《20世纪的中国乡村》内容简介:本书从四个部分,系统呈现20世纪中国乡村社会发展状况。第一部分,探讨中国近代社会史研究的历程、
《IP授权商业化:从入门到精通》内容简介:本书是针对授权行业的入门指导及案例分析著作,也是对新形势下IP授权商业化流程进行全面
Fundamentalandtechnologicaltopicsareblendeduniquelyanddevelopedclearlyinninechap...
《讲述中国历史》内容简介:这是一部美国历史学家魏斐德从全球范围来解析中国历史的著作,堪称其40年中国史研究集大成之作!内容涵
资深Java专家10年经验总结,全程案例式讲解,首本全面介绍Java多线程编程技术的专著结合大量实例,全面讲解Java多线程编程中的并
《华为增量绩效法》内容简介:增量绩效法是华为“打胜仗”思想的演绎和延伸,是被华为实践证明的管理利器,也是被众多中小企业验证
这本书教你怎么用Bootstrap框架轻松设计出“杀手级”界面及响应式网站。从怎么用Bootstrap的HTML/CSS工具和现成模板构建页面开始
《Project 2016项目管理自学经典》内容简介:本书以案例为主,由浅入深、图文并茂地介绍了Project 2016项目管理的基础知识和应用技
ThesecondeditionofHaskell:TheCraftofFunctionalProgrammingisessentialreadingforbe...
《千金良方:MySQL性能优化金字塔法则》内容简介:本书一共分为3篇:基础篇、案例篇和工具篇。“基础篇”从理论基础和基本原理层面
《所有的颠沛流离,只为成就更好的自己》内容简介:人,切不可一路成长,一路悲伤。在觉得快受不了了的日子里,请反复告诉自己,这
《围棋围地二选一从入门到精通(级位篇)》内容简介:本书是由少儿围棋教育专家、职业五段棋手赵守洵专为围棋初学者创作。本书按照
《白孔雀》内容简介:“劳伦斯经典系列”由《儿子与情人》《恋爱中的女人》《骑马出走的女人》《白孔雀》四本组成,由国内劳伦斯研
Best-sellingauthorAndyKesslertiesupthelooseendsfromhisprovocativebook,RunningMon...
Apple公司的iPhone已经开创了移动平台新纪元!它与AppStore的绝配也为全世界的程序员提供了一个施展才华的全新大舞台。只要有新奇