内容简介:
今天的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
本书采用工程案例的形式,将日常JavaEE项目开发所涉及的技术要点进行了解析,系统介绍了Apache的安装、Tomcat的安装、虚拟主机的
《童话青格里》内容简介:一段艰难的归乡路,开启了一个平凡少女坎坷而又传奇的一生。一位伟大的母亲阿尼帕,在青格里不断播洒着她
《SEM深度解析:搜索引擎营销及主流网站分析实战》内容简介:网络在我们的工作与生活中的地位是毋庸置疑的,我们每天都要通过搜索引
本书讲述如何用Python框架Django构建出强大的Web解决方案,本书讲解了使用新的Django1.0版的各种主要特性所需要的技术、工具以及
《高可用MySQL(第2版)》内容简介:本书主要讲解真实环境下如何使用MySQL的复制、集群和监控特性,揭示MySQL可靠性和高可用性的方
《中国城市包容度、流动人口与城市发展研究》内容简介:城市流动人口、城市产业发展、城市发展规模以及相关的城镇化问题、农民工问
《文字设计的原理》内容简介:在平面设计中,文字设计的重要性无需多说。各种设计作品中都要添加文字。而文字又是信息传递的重要
《实用精神卫生诊疗技能手册》内容简介:本书涵盖了精神病学的重点内容,从精神检查评估、常见心理治疗方法、精神卫生与多学科诊疗
《轮船史》内容简介:本书是由我国著名科技史学者、中科院院士杨槱教授继《帆船史》后的又一本船史图书。杨槱教授长期从事船舶的生
《让灯守着我:戴望舒传》内容简介:本书是著名诗人戴望舒的传记作品。戴望舒曾以一首《雨巷》风靡一时。其一生诗歌作品百首不到,
《组织合伙人:寻找增长新曲线》内容简介:企业增长的底层逻辑是什么?企业组织架构的痛点是什么?如何找到企业的增长新曲线?如何
《创新设计:TRIZ发明问题解决理论》认为发明问题解决理论(TRIZ)对“创新”有明确的定义、有较完整且可操作的原理,很适合我国企
《Java自然语言处理》内容简介:本书将教会读者如何在Java库的帮助下执行语言分析,同时不断地从结果中获得见解。首先介绍NLP及其各
《十力语要初续》内容简介:本书乃《十力语要》的续编,仍沿用《十力语要》旧例,辑录书札、论文、杂文等总计四十二篇,是了解熊十
1.本书是唯一一本介绍JavaScript面向对象编程的图书。2.本书作者是知名的Web开发人员和作者。受到国内众多前端开发人员,如淘宝U
吴信东(XindongWu),教授英国爱丁堡大学人工智能学博士,任美国佛蒙特大学计算机科学系主任。吴教授在数据挖掘、知识系统和Web
《诗经绘》内容简介:《诗经》,中国诗歌的源头。2500年来,它在诉说些什么? “有狐绥绥,在彼淇梁。心之忧矣,之子无裳”是姑娘爱
《新媒体跨界交互设计》内容简介:本书从传播媒介发展、网络互动、软硬件结合、可视化编程、体感交互技术、跨平台交互引擎六个方面
《淘宝美工店铺装修实战宝典》内容简介:《淘宝美工店铺装修实战宝典:Photoshop+Dreamweaver》由经验丰富的设计师编写,采用循序渐
《一图一例BIM钢筋算量》内容简介:本书共五章,第一章从BIM基础知识讲起,逐渐拓展到BIM在建筑行业领域的应用,使读者对BIM技术有