- 博客(41)
- 收藏
- 关注
翻译 精通安卓性能优化-第八章(四)
ManifestOpenGL应用的manifest需要指定两件事:(1) 需要设备支持哪个OpenGL版本(2) 应用支持哪种材质压缩格式Listing 8-16给出了如何指定设备支持OpenGL 2.0和应用支持两种压缩格式:ETC1和PVRTC。Listing 8-16 Manifest和OpenGL
2014-07-23 11:37:14 696 1
翻译 精通安卓性能优化-第八章(三)
OpenGL ES在现在的Android设备和应用上3D渲染变得越来越重要。成为一个3D渲染专家需要很多的时间,为了使用3D渲染,接下来的部分介绍几个简单实现的技术,以及需要意识到的几个基本的思想。如果想学习更多的Android OpenGL ES,你可以参考"Pro OpenGL ES for Android"。大多数当前的Android设备支持OpenGL ES 1.1和OpenGL
2014-07-22 22:36:06 1479
翻译 精通安卓性能优化-第八章(二)
复用Layout和在C/C++中直接#include相似,Android在XML布局中支持标签。简单的使标签包含另外一个XML布局,如Listing 8-7所示。标签可以为两个目的使用:(1) 你期望多次使用同样的布局(2) 你的布局有个通用部分,依赖于设备配置(比如,屏幕方向:landscapte或者protrait)Listing 8-7给出了当覆盖某些included的布
2014-07-22 17:46:02 573
翻译 精通安卓性能优化-第八章(一)
第八章 Graphics你经常需要花费很多时间去定义你的应用的样子。不管是一个使用标准Android控件的e-mail应用或者使用OpenGL ES的游戏,当浏览应用商店比如Android市场或者Amazon应用市场的时候,你的应用看起来什么样子是用户首先会注意到的。一个看起来很好的应用,但是图片的显示很慢或者更新很慢,很可能不会有很大的点击量。相似的,一个游戏如果渲染质量很高,但是帧率很
2014-07-22 16:09:28 603
翻译 精通安卓性能优化-第七章(四)
传感器传感器是有趣的。每个人都喜欢并且希望去使用它们。使用传感器的方式和使用Location Provider的方式相似:应用针对指定的传感器注册一个sensor listener,会被通知更新。Listing 7-15给出了你如何注册一个设备加速器的listener。Listing 7-15 注册一个加速器的传感器
2014-07-22 12:11:53 754
翻译 精通安卓性能优化-第七章(三)
定位任何房地产经纪人将告诉你3个最重要的事情是:locaiton, location, location。Android理解这件事,并且允许应用知道设备在哪里。(不会告诉你设备正在一个好学区,尽管我很确定有个这样的应用)Listing 7-8给出了如何使用系统的定位服务请求location更新。
2014-07-22 12:06:23 776
翻译 精通安卓性能优化-第七章(二)
关闭Broadcast Receiver为了保存电量,应用应该避免执行无目的的代码。在上面的实例中,当用户界面不在最前的时候去更新Textview的text是没有价值的,仅仅无必要的从电池提取能量。除了ACTION_BATTERY_CHANGED的sticky intent包含电池信息,Android定义了其他的四个intent,你的应用可以使用:(1) ACTION_BATTERY_
2014-07-19 22:15:56 755
翻译 精通安卓性能优化-第六章(三)
Native Tracing除了使用startMethodTracing() API分析Java方法外,安卓同样支持native tracing(包括核心代码)。Native tracing也被称为QEMU tracing。本段学习如何产生QEMU trace文件,怎么样将他们转换为Traceview可以理解的文件。为了产生QEMU trace,需要做两件事:(1) 使用-trace选
2014-07-18 14:56:36 1351
翻译 精通安卓性能优化-第六章(二)
Tracing一旦发现了什么需要花费太多的时间,你很可能希望可以了解更多的细节,哪个方法是罪魁祸首。你可以在tracing-specific方法帮助下创建trace文件,通过Traceview工具去分析他们。
2014-07-18 14:50:58 1000
翻译 精通安卓性能优化-第五章(四)
Activity生命周期你创建的线程不会自动意识到activity生命周期的变化。比如,你孵化的一个线程不会注意到activity的onStrop()方法被调用,activity不会再可见,或者你的activity的onDestroy()方法被调用。这意味着你需要去做额外的事情使得应用的生命周期和你的线程同步。Listing 5-20显示了一个简单的示例,在activity被销毁后AsyncT
2014-07-17 13:58:48 442
翻译 精通安卓性能优化-第五章(三)
Concurrency在java.util.concurrent.atomic和java.util.concurrent.locks包中定义了更多的类。java.util.concurrent.atomic包包含如下的类:(1) AtomicBoolean(2) AtomicInteger(3) AtomicIntegerArray(4) AtomicIntegerFieldU
2014-07-17 12:13:19 572
翻译 精通安卓性能优化-第五章(二)
Handlers and Loopers安卓在android.os包中定义了两个类,作为在多线程应用中通信的基石:1) Handler2) Looper当创建一个AsynTask对象,隐藏了Handler和Looper的细节,在一些情况下,你需要去显式的使用handlers和loopers,比如,当你需要去post一个Runnable对象到其他线程而不是主线程。
2014-07-16 23:12:42 461
翻译 精通安卓性能优化-第四章(五)
引用尽管释放内存是垃圾回收器的一个重要功能,它还可以做的更多,是一个完整的内存管理系统。每个写过Java代码的人都听过引用,一个对象怎样被引用或者不被引用。然而,很少有人知道引用的多种类型。实际上Java定义了4种类型的引用:(1) Strong(2) Soft(3) Weak(4) Phantom
2014-07-14 22:55:38 524
翻译 精通安卓性能优化-第四章(三)
其他算法我们已经看到不同的数据类型对产生的代码怎样的影响,现在是时间去看当处理大量数据的时候一些稍微复杂的算法。Listing 4-10给出了3个简单的方法:一个简单的调用Arrays.sort()去排列一个array,一个查找Array中的最小的值,另一个把array里面所有的元素加和。
2014-07-12 21:58:10 539
翻译 精通安卓性能优化-第四章(二)
比较值现在让我们考虑另外一个基本函数,需要两个参数并且依赖于第一个参数是否比第二个大返回0或者1,如Listing 4-8所示。Listing 4-8 比较
2014-07-11 23:15:05 568
翻译 精通安卓性能优化-第三章(三)
ARM指令ARM指令是丰富的。Table 3-1给出了可用的ARM指令列表,每个给出了一个主要的描述,但不包括每个指令的详细信息。如果你熟悉这些指令,你将了解到他们中的一些会比其他的使用更多,尽管不常用的那些指令经常是可以显著提升性能的。比如,ADD和MOV指令几乎是无处不在的,而SETEND指令不常用(当你需要去访问不通字节序的数据的时候,它是一个必须的指令)。
2014-07-06 12:18:00 1061
翻译 精通安卓性能优化-第三章(二)
颜色转换在图形程序中一个通用的操作是将颜色从一种格式转换成另外一种。比如,32位的值代表的颜色,有4个8位的通道(alpha, red, green, blue)可以被转换为16位的值,带有3个通道(5位代表红色,6位代表绿色,5位代表蓝色,没有alpha)。这两种格式通常被称为分别称为ARGB8888和RGB565。Listing 3-11
2014-07-06 11:52:28 1341
翻译 精通安卓性能优化-第二章(五)
Strings在Java和C/C++使用字符串可能导致性能问题,Java的String使用16位的Unicode字符(UTF-16),而许多C/C++函数简单的使用char*如代表字符串(即C/C++中的string大多数情况下是ASCII或者UTF-8)。怀旧的开发者甚至使用EBCDIC编码。即,Java字符串在JNI可以使用之前需要转换成C/C++字符串。在Listing 2-20给出一个
2014-06-25 12:51:31 1375
翻译 精通安卓性能优化-第二章(三)
编译Native库既然已经完成C代码的实现,我们可以最终通过在应用的jni路径下调用ndk-build命令编译这个shared library。
2014-06-24 16:47:26 764
翻译 精通安卓性能优化-第一章(十)- 总结
总结多年前,java在性能上有不好的名声,但是现在这不是正确的了。Dalvik虚拟机包括它的JIT编译器,在每个安卓版本都会有提升。你的代码可以编译成native代码,可以利用最新的CPU的架构优势而不需要重编译任何地方。当实现很重要的时候,你的最高优先级应该是去认真的选择数据结构和算法。好的算法可以不需要任何的优化依然有很好的性能。从另一方面说,一个不好的算法通常给出不好的结果,而不管你在它
2014-05-27 10:37:10 701
翻译 精通安卓性能优化-第一章(九)
SQLite很多应用程序不是SQLite的重度使用者,因此非常幸运的不需要去担心太多处理数据库的性能问题。然而,如果需要去优化Android应用中SQLite相关的代码的情况下需要知道几个概念:(1) SQLite状态(2) 事务(Transaction)(3) 查询
2014-05-27 10:30:50 535
翻译 精通安卓性能优化-第一章(七)
响应性能不是单纯的速度问题。只要你的应用显示给用户的速度很快,它将会被认为很快。想要做到显示速度快,应用必须响应灵敏。比如,为了显示得快,可以直到需要的时候才给对象分配内存,一种被叫做懒汉式初始化的技巧。在程序开发过程中,你最希望发现的就是在性能敏感的地方有执行较慢的代码。
2014-05-21 18:02:44 471
翻译 精通安卓性能优化-第一章(六)
数据结构像在不同的Fibonacci实现中展示的那样,好的算法和数据结构是能够快速运行的应用程序的关键因素。你需要对Android和Java定义的许多数据结构比较熟悉,可以快速的针对需求选择合适的数据结构。考虑选择合适的数据结构是开发最的高优先事情之一。在java.util包中的主要数据结构列在图1.1中。
2014-05-21 13:05:50 602
翻译 Tasks and Back Stack(未完成)
原文地址:http://developer.android.com/guide/components/tasks-and-back-stack.html
2014-05-20 11:17:41 750
翻译 精通安卓性能优化-第一章(五)
上面提到的LruCache类是一个很好的例子,为什么你需要知道以哪个API Level为目标。安卓版本大约每6个月发布一次,新的API只在之后的版本有效。任何调用一个不存在的API的试图都会引起crash,不止使用户沮丧同样是开发者的耻辱。比如,调用Log.wtf(TAG, “Really?”)在安卓1.5设备上将会引起应用crash,Log.wtf在安卓2.2开始引入(API 8),这将是可怕的
2014-05-19 16:40:23 804
翻译 精通安卓性能优化-第一章(一)
第一章 优化Java代码许多的安卓应用开发者从以往的经验对Java语言有很好的使用知识。从1995年出道以来,Java已经成为了一种非常流行的编程语言。有些调查指出Java在和其他语言比较的时候失去了光泽,比如Object-C或者C#,另外有些调查把Java列为最流行的语言。自然,随着移动设备的销量超过个人电脑和Android平台的成功(在2011年11月,每天激活700,000部),J...
2014-05-10 23:49:51 1030
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人