具体描述
内容简介:
今天的Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。本书主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来混合或单独使用Java、C/C++来开发应用。书中还特别讲解了如下内容:
• 一些OpenGL的优化技术以及RenderScript(Android的新特性)的基础知识;
• 利用SDK来优化应用的Java代码的技巧;
• 通过高效使用内存来提升性能的技巧;
• 延长电池使用时间的技巧;
• 使用多线程的时机及技巧;
• 评测剖析代码的技巧。
把本书的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为健壮高效,从而广受用户好评,并最终获得成功。
作者简介
作者介绍:
Hervé Guihot 目前在联发科技公司(MTK, www.mediatek.com)担任软件工程经理。他有十多年的嵌入式系统开发工作经验,主要与数字电视技术相关。目前正在研究如何将Android引入基于ARM的数字家庭平台(电视,蓝光播放器)。
目录信息
第1章 Java代码优化 1
1.1 Android如何执行代码 1
1.2 优化斐波纳契数列 4
1.2.1 从递归到迭代 4
1.2.2 BigInteger 6
1.3 缓存结果 10
1.4 API等级 12
1.5 数据结构 14
1.6 响应能力 17
1.6.1 推迟初始化 19
1.6.2 StrictMode 19
1.7 SQLite 21
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 创建Makefile 33
2.2.4 实现本地函数 35
2.2.5 编译本地库 36
2.2.6 加载本地库 37
2.3 Application.mk 37
2.3.1 为(几乎)所有设备优化 39
2.3.2 支持所有设备 40
2.4 Android.mk 43
2.5 使用C/C++改进性能 45
2.6 本地Acitivity 52
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 NEON 79
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/STD 89
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 API 109
4.7 内存少的时候 110
4.8 总结 111
第5章 多线程和同步 112
5.1 线程 112
5.2 AsyncTask 115
5.3 Handler和Looper 118
5.3.1 Handler 118
5.3.2 Looper 120
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中的Traceview 144
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 WakeLock 173
7.9 总结 175
第8章 图形 176
8.1 布局优化 176
8.1.1 相对布局 178
8.1.2 合并布局 181
8.1.3 重用布局 183
8.1.4 ViewStub 184
8.2 布局工具 185
8.2.1 层级视图 186
8.2.2 layoutopt 186
8.3 OpenGL ES 186
8.3.1 扩展 187
8.3.2 纹理压缩 189
8.3.3 Mipmap 193
8.3.4 多APK 194
8.3.5 着色 195
8.3.6 场景复杂性 195
8.3.7 消隐 195
8.3.8 渲染模式 195
8.3.9 功耗管理 195
8.4 总结 196
第9章 RenderScript 197
9.1 概览 197
9.2 Hello World 199
9.3 Hello Rendering 202
9.3.1 创建渲染脚本 202
9.3.2 创建RenderScriptGL Context 203
9.3.3 展开RSSurfaceView 204
9.3.4 设置内容视图 204
9.4 在脚本中添加变量 205
9.5 HelloCompute 208
9.5.1 Allocation 209
9.5.2 rsForEach 210
9.5.3 性能 213
9.6 自带的RenderScript API 214
9.6.1 rs_types.rsh 215
9.6.2 rs_core.rsh 217
9.6.3 rs_cl.rsh 219
9.6.4 rs_math.rsh 222
9.6.5 rs_graphics.rsh 223
9.6.6 rs_time.rsh 224
9.6.7 rs_atomic.rsh 225
9.7 RenderScript与NDK对比 225
9.8 总结 226
· · · · · · (收起)
读后感
用户评价
这本书的叙事方式绝对是一股清流!作为一名多年Android开发的老兵,我读过太多技术书籍,但《Android应用性能优化》的独特之处在于,它将枯燥的技术知识融入到了一个引人入胜的故事线中。我仿佛化身为书中的主角,在解决一个又一个实际的性能难题。作者非常擅长使用类比和生活化的语言来解释复杂的概念,比如,他将主线程比作“交通枢纽”,将后台线程比作“物流通道”,生动形象地描绘了它们在应用运行中的作用和可能遇到的拥堵。这种叙事方式极大地降低了阅读门槛,让我这个不是科班出身的开发者也能轻松理解。而且,故事的推进逻辑非常自然,每个章节的引入都像是主角在解决一个突发问题,然后通过学习书中介绍的知识来找到解决方案。书中对于网络请求优化、图片加载优化、数据库操作优化等方面的讲解,更是贴合了日常开发中的痛点。作者不仅仅是罗列了一堆API或者技巧,而是深入剖析了背后的原理,让你知其然,更知其所以然。读完这本书,我感觉自己对Android应用的运行机制有了更深层次的理解,不再是简单地调用API,而是能够从系统层面去思考性能问题。
对于我这样一名初入Android开发的小白来说,《Android应用性能优化》简直是一盏明灯。我之前总是被各种层出不穷的性能问题搞得焦头烂额,知道要优化,但总不知道从何下手。这本书的优点在于,它从最基础的概念讲起,循序渐进,让我这个零基础的读者也能逐步理解。比如,关于内存泄漏的讲解,它并没有一开始就抛出复杂的工具,而是先从Java内存模型讲起,然后逐步深入到Android的内存管理机制,再到最后介绍如何使用LeakCanary等工具进行检测。这种由浅入深的讲解方式,让我对内存泄漏有了清晰的认识,并且学会了如何从源头上避免。书中对于ANR(Application Not Responding)的分析,也提供了非常实用的排查思路和解决方案。我以前总是觉得ANR是一个非常神秘的错误,读完这本书,我才明白它背后的一些规律和触发条件。作者在讲解过程中,也穿插了一些生动有趣的小故事,让原本可能沉闷的技术学习过程变得轻松愉快。
我不得不说,《Android应用性能优化》这本书颠覆了我对技术书籍的固有印象。它不是那种“干巴巴”地罗列知识点的书,而是充满了作者的思考和见解。书中对于“异步操作”的讲解,就让我受益匪浅。作者并没有简单地介绍AsyncTask或者Handler,而是深入分析了多线程的原理,以及在Android中进行异步操作时需要注意的一些坑。他特别强调了“避免滥用线程”,并给出了很多关于如何合理使用线程池、如何进行线程通信的建议。让我眼前一亮的是,书中还专门开辟了一个章节,讨论了“代码健壮性”和“用户体验”之间的关系。作者认为,性能优化不仅仅是为了让应用跑得更快,更是为了给用户带来更流畅、更愉悦的使用体验。这一点非常重要,它帮助我重新审视了自己在开发过程中的一些习惯。例如,我以前可能过于追求功能的实现,而忽略了用户的使用感受。读完这本书,我开始更加注重细节,思考如何通过一些小小的优化,就能显著提升用户的满意度。
这本书的书名是《Android应用性能优化》,但它远不止是关于“优化”这么简单。当我翻开第一页,就被作者细腻的笔触所吸引,他并没有直接抛出枯燥的技术概念,而是通过讲述一个虚构的、但又极其贴近现实的Android应用开发故事,层层剥茧地揭示了性能瓶颈的根源。书中对于UI渲染流程的讲解,堪称教科书级别,从View的绘制到Layout的测量,再到最后的绘制,作者用生动的图示和代码示例,将原本晦涩难懂的底层机制讲得浅显易懂。我尤其喜欢其中关于“卡顿”的章节,它不仅列举了常见的导致卡顿的原因,更重要的是,作者引导读者思考,如何在编码阶段就规避这些问题,而不是等到出现问题后再去“救火”。他强调的是一种“预防胜于治疗”的开发理念,这对于我这样正在努力提升自己技术水平的开发者来说,无疑是醍醐灌顶。书中还深入探讨了内存管理,内存泄漏的排查和规避,以及Bitmap的优化策略。这些内容对于任何一个希望做出高质量Android应用的开发者来说,都是必不可少的知识。作者在讲解过程中,并没有过度依赖炫技,而是聚焦于那些真正能提升用户体验、降低资源消耗的实用技巧。
这是一本给我带来惊喜的书。我原本以为《Android应用性能优化》会是一本充斥着各种代码片段和性能指标的枯燥技术手册,但事实却完全出乎我的意料。作者的写作风格非常具有启发性,他不仅仅是在教授“如何优化”,更是在引导读者形成一种“性能思维”。书中大量的案例分析,让我看到了许多我在实际开发中可能忽略的细节。例如,关于线程池的使用,书中不仅仅提到了如何创建和管理线程池,更深入地探讨了不同场景下线程池的配置策略,以及不当配置可能带来的潜在风险。另外,关于视图复用和列表优化,书中给出的方案非常具有前瞻性,不仅仅是简单的RecyclerView优化,还涉及到了更底层的ViewStub和LayoutInflater的优化技巧。让我印象深刻的是,作者并没有回避讨论那些“灰色地带”的优化方法,而是客观地分析了它们的优缺点,并给出了一些实用的建议。这种坦诚的态度,让我觉得非常受用。这本书更像是一位经验丰富的导师,在循循善诱地教导你如何成为一个更优秀的开发者,而不是简单地把答案喂给你。
以前看过,还可以吧,有点老了
以前看过,还可以吧,有点老了
android 性能优化
书很薄,一两天就看完了,知识点也比较浅,优化这种事,师傅领进门,修行在个人,全靠经验
android 性能优化