Android应用性能优化.pdf

Android应用性能优化.pdf
 

书籍描述

编辑推荐
Android应用开发者经常要想尽办法来提升程序性能。Herve Guihot专著的《Android应用性能优化》主要介绍如何快速高效地优化应用,让应用变得稳定高效。你将学会利用Android SDK和NDK来混合或单独使用Java、C/C++来开发应用。
把Herve Guihot专著的《Android应用性能优化》的内容学以致用,你的编程技术就会得到关键性的提升,写出的应用就会更为健壮高效,从而广受用户好评,并最终获得成功。

媒体推荐
    “本书详细介绍了优化Android代码的各种规则和技巧,揭开了Android和JAVA核心数据结构的神秘面纱。最值得称道的是,作者展示了使用缓存、SQLite以及延长电池使用寿命的技术,这是每个严谨的开发人员都必须要掌握的内容。”

    ——网友评论



    “市面上这种书并不多见!我想把这本书推荐给所有Android高级程序员。”

    ——网友评论

    

作者简介
作者:(法国)埃尔韦(Hervé Guihot) 译者:白龙

埃尔韦(Hervé Guihot),20年前通过Ams仃ad CPc464开始学计算机。尽管CPC464让他着迷绿色屏幕的设备(问问他用的啥手机),不过由于Android成为了流行的应用开发平台,并且是唯一能把Hervé的两个最爱(软件和甜点)搭配在一起的平台,因此Hen,6开始了在Android上的工作。在互动与数字电视的领域里工作多年后,他现在关注的是让Android运行在更多的设备上,促使更多的开发者利用Android的强大功能。Hervé目前在联发科技公司担任软件工程经理。联发科技公司是一家业界领先的提供无线通信和数字多媒体解决方案的芯片设计公司。他在布列塔尼的雷恩第一大学计算机与传播高等教育学院获取了电信工程学学士学位,有时你会发现他在18号大街和格雷罗大街的交叉口处的商店排队买法国长条泡芙(éclair)。

目录
第1章Java代码优化
1.1Android如何执行代码
1.2优化斐波纳契数列
1.2.1从递归到迭代
1.2.2BigInteger
1.3缓存结果
1.4API等级
1.5数据结构
1.6响应能力
1.6.1推迟初始化
1.6.2StrictMode
1.7SQLite
1.7.1SQLite语句
1.7.2事务
1.7.3查询
1.8总结
第2章NDK入门
2.1NDK里有什么
2.2混合使用Java和C/C++代码
2.2.1声明本地方法
2.2.2实现JNI粘合层
2.2.3创建Makefile
2.2.4实现本地函数
2.2.5编译本地库
2.2.6加载本地库
2.3Application.mk
2.3.1为(几乎)所有设备优化
2.3.2支持所有设备
2.4Android.mk
2.5使用C/C++改进性能
2.6本地Acitivity
2.6.1构建缺失的库
2.6.2替代方案
2.7总结
第3章NDK进阶
3.1汇编
3.1.1最大公约数
3.1.2色彩转换
3.1.3并行计算平均值
3.1.4ARM指令
3.1.5ARMNEON
3.1.6CPU特性
3.2C扩展
3.2.1内置函数
3.2.2向量指令
3.3技巧
3.3.1内联函数
3.3.2循环展开
3.3.3内存预读取
3.3.4用LDM/STM替换LDR/STD
3.4总结
第4章高效使用内存
4.1说说内存
4.2数据类型
4.2.1值的比较
4.2.2其他算法
4.2.3数组排序
4.2.4定义自己的类
4.3访问内存
4.4排布数据
4.5垃圾收集
4.5.1内存泄漏
4.5.2引用
4.6API
4.7内存少的时候
4.8总结
第5章多线程和同步
5.1线程
5.2AsyncTask
5.3Handler和Looper
5.3.1Handler
5.3.2Looper
5.4数据类型
5.5并发
5.6多核
5.6.1为多核修改算法
5.6.2使用并发缓存
5.7Activity生命周期
5.7.1传递信息
5.7.2记住状态
5.8总结
第6章性能评测和剖析
6.1时间测量
6.1.1System.nanoTime()
6.1.2Debug.threadCpuTimeNanos()
6.2方法调用跟踪
6.2.1Debug.startMethodTracing()
6.2.2使用Traceview工具
6.2.3DDMS中的Traceview
6.2.4本地方法跟踪
6.3日志
6.4总结
第7章延长电池续航时间
7.1电池
7.2禁用广播接收器
7.3网络
7.3.1后台数据
7.3.2数据传输
7.4位置
7.4.1注销监听器
7.4.2更新频率
7.4.3多种位置服务
7.4.4筛选定位服务
7.4.5最后已知位置
7.5传感器
7.6图形
7.7提醒
7.8WakeLock
7.9总结
第8章图形
8.1布局优化
8.1.1相对布局
8.1.2合并布局
8.1.3重用布局
8.1.4ViewStub
8.2布局工具
8.2.1层级视图
8.2.2layoutopt
8.3Open GLES
8.3.1扩展
8.3.2纹理压缩
8.3.3Mipmap
8.3.4多APK
8.3.5着色
8.3.6场景复杂性
8.3.7消隐
8.3.8渲染模式
8.3.9功耗管理
8.4总结
第9章RenderScript
9.1概览
9.2HelloWorld
9.3HelloRendering
9.3.1创建渲染脚本
9.3.2创建RenderScriptGL Context
9.3.3展开RSSurfaceView
9.3.4设置内容视图
9.4在脚本中添加变量
9.5HelloCompute
9.5.1Allocation
9.5.2rsForEach
9.5.3性能
9.6自带的RenderScript API
9.6.1rs_types.rsh
9.6.2rs_core.rsh
9.6.3rs_cl.rsh
9.6.4rs_math.rsh
9.6.5rs_graphics.rsh
9.6.6rs_time.rsh
9.6.7rs_atomic.rsh
9.7RenderScript与NDK对比
9.8总结

文摘
版权页:

Android应用性能优化

插图:

Android应用性能优化

Android Market可以让应用发布多个APK,每个针对不同的配置。例如,可以让一个APK只使用ETC1纹理,另一个用PVRTC纹理——即为使用PowervR的Android设备优化。这些APK共享相同的AndroidMarket列表,AndroidMarket会为每个设备仔细选择适合的APK。用户不必担心下载并安装的APK是否正确,这一切是自动和透明的。
注意并非所有的Android应用商店都支持此功能,所以如果你打算分发应用到多个商店,还是尽可能用适合所有设备的单一APK吧。
当然,纹理可能不是你需要发布多个APK的唯一原因。例如,你可能针对旧设备发布小的APK,对较新的设备发布带有更多功能且更大的APK。虽然可以使用多个APK,但它会使发布流程和维护变得复杂,因此,建议你尽可能尝试发布单一APK。
8.3.5着色
OpenGL Es 2.o支持OpenGL Es着色语言(shadillg Language),以取代OpenGL ES 1.x中的固定变换函数和分散的管线(pipeline)。这种语言基于C,可以让你编写自己的顶点(venex)和片段(fragment)着色来控制OpenGL管线。
像C程序一样,着色器可以非常简单,也可极其复杂。虽然没有必须遵循的单一规则,但你应该尽可能减少着色器的复杂性,这会非常影响性能。
8.3.6场景复杂性
显然,渲染复杂的场景比简单的要花的时间长。一个提高帧速率的方法是简化要渲染的场景,同时保持可接受的视觉质量。例如,对于可看到的纹理,较远的物体可以减少细节,使用更少的三角形。简单的对象使用的内存和带宽较少。
8.3.7 消隐
尽管GPU擅长几何运算,并能确定要渲染的物体,但应用应该尽力消隐(Culling)视线以外的物体,这样就不会向那些因为不可见而要丢弃的对象发送绘制命令。
消隐对象(甚至三角形)有许多方法,这些已超出本书的范围,帧速率低于预期可能是考虑不周的消隐方法造成的。例如,可以快速消除摄像机(camera)后面的物体。
注意大多情况下你可以启用背面消隐(Backface Culling),这将不会渲染对象背面的三角形。

内容简介
今天的Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。《Android应用性能优化》主要介绍如何快速高效地优化应用,让应用变得稳定高效,你将学会利用Android SDK和NDK来混合或单独使用Java、C/C++来开发应用。《Android应用性能优化中还特别讲解了如下内容:一些OpenGL的优化技术以及RenderScript(Android的新特性)的基础知识;利用SDK来优化应用的Java代码的技巧;通过高效使用内存来提升性能的技巧;延长电池使用时间的技巧;使用多线程的时机及技巧;评测剖析代码的技巧。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多