Android性能优化方法和汇总方案

上传人:大米 文档编号:564789518 上传时间:2022-12-20 格式:DOC 页数:9 大小:377KB
返回 下载 相关 举报
Android性能优化方法和汇总方案_第1页
第1页 / 共9页
Android性能优化方法和汇总方案_第2页
第2页 / 共9页
Android性能优化方法和汇总方案_第3页
第3页 / 共9页
Android性能优化方法和汇总方案_第4页
第4页 / 共9页
Android性能优化方法和汇总方案_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Android性能优化方法和汇总方案》由会员分享,可在线阅读,更多相关《Android性能优化方法和汇总方案(9页珍藏版)》请在金锄头文库上搜索。

1、Android性能优化方法对于一些 Android项目,影响性能瓶颈的主要是Android 自己内存管理机制问题,目前手机厂商对RAM都比较吝啬,对于软件的流畅性来说RAM对性能的影响十分敏感,除了优化 Dalvik虚拟机的堆内存分配外,我们还可以强制定义自己软件的对内存大小,我们使用Dalvik提供的 类来设置最小堆内存为例:1.privatefinalstaticintCWJ_HEAP_SIZE =6 *1024 *1024 ;1. VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);/ 设置最小heap 内存为 6MB大小。当

2、然对于内存吃紧来说还可以通过手动干涉GC去处理bitmap设置图片尺寸,避免内存溢出OutOfMemoryError的优化方法 android 中用 bitmap 时很容易内存溢出,报如下错误: 主要是加上这段:1.BitmapFactory.Options options =new BitmapFactory.Options();2.options.inSampleSize =2 ; eg1 : ( 通过 Uri 取图片 )1.privateImageView preview;2.BitmapFactory.Options options =new BitmapFactory.Options

3、();3.options.inSampleSize =2; / 图片宽高都为原来的二分之一,即图片为原来的四分之一4.Bitmap bitmap = BitmapFactory.decodeStream(cr5.openInputStream(uri),null , options);6.preview.setImageBitmap(bitmap);以上代码可以优化内存溢出,但它只是改变图片大小,并不能彻底解决内存溢出。 eg2: (通过路径去图片)1.privateImageView preview;2.privateString fileName=/sdcard/DCIM/Camera/2

4、010-05-14 16.01.44.jpg ;3.BitmapFactory.Options options =new BitmapFactory.Options();4.options.inSampleSize =2 ; / 图片宽高都为原来的二分之一,即图片为原来的四分之一5.Bitmap b = BitmapFactory.decodeFile(fileName, options);6.preview.setImageBitmap(b);7.filePath.setText(fileName);Android还有一些性能优化的方法:首先内存方面, 可以参考 Android堆内存也可自己

5、定义大小和 优化 Dalvik虚拟机的堆内存分配基础类型上,因为Java 没有实际的指针,在敏感运算方面还是要借助NDK来完成。这点比较有意思的是Google 推出 NDK可能是帮助游戏开发人员,比如OpenGLES的支持有明显的改观,本地代码操作图形界面是很必要的。图形对象优化,这里要说的是Android 上的 Bitmap 对象销毁,可以借助recycle()方法显示让GC回收一个Bitmap 对象,通常对一个不用的Bitmap 可以使用下面的方式,如1.if(bitmapObject.isRecycled()=false)/ 如果没有回收2. bitmapObject.recycle()

6、;目前系统对动画支持比较弱智对于常规应用的补间过渡效果可以,但是对于游戏而言一般的美工可能习惯了GIF 方式的统一处理, 目前 Android 系统仅能预览GIF 的第一帧, 可以借助 J2ME中通过线程和自己写解析器的方式来读取GIF89 格式的资源。 对于大多数Android 手机没有过多的物理按键可能我们需要想象下了做好手势识别GestureDetector和重力感应来实现操控。通常我们还要考虑误操作问题的降噪处理。Android堆内存也可自己定义大小对于一些大型Android项目或游戏来说在算法处理上没有问题外,影响性能瓶颈的主要是 Android 自己内存管理机制问题,目前手机厂商对

7、RAM都比较吝啬, 对于软件的流畅性来说 RAM对性能的影响十分敏感,除了上次Android开发网提到的优化Dalvik虚拟机的堆内存分配外,我们还可以强制定义自己软件的对内存大小,我们使用Dalvik提供的类来设置最小堆内存为例:1.privatefinalstaticintCWJ_HEAP_SIZE =6 *1024 *1024 ;1. VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);/ 设置最小heap 内存为 6MB大小。当然对于内存吃紧来说还可以通过手动干涉GC去处理,我们将在下次提到具体应用。优化 Dalvik虚拟机

8、的堆内存分配对于 Android 平台来说, 其托管层使用的DalvikJavaVM从目前的表现来看还有很多地方可以优化处理,比如我们在开发一些大型游戏或耗资源的应用中可能考虑手动干涉GC处理,使用类提供的setTargetHeapUtilization方法可以增强程序堆内存的处理效率。当然具体原理我们可以参考开源工程,这里我们仅说下使用方法:privatefinalstaticfloatTARGET_HEAP_UTILIZATION = 0.75f;在程序onCreate时就可以调用VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_

9、HEAP_UTILIZATION);即可。Android布局的优化方案汇总层级观察器 (Hierarchy Viewer):Android SDKtools目录下提供一个观察布局的工具,层级观察器(HierarchyViewer) 。Hierarchy Viewer工具是一个非常好的布局优化工具,同时,你也可以通过它学习他人的布局。应该说是一个非常实用的工具。上面写有控件名称和id 等信息,下方的圆形表示这个节点的渲染速度,从左至右分别为测量大小, 布局和绘制。 绿色最快, 红色最慢。 右下角的数字为子节点在父节点中的索引,如果没有子节点则为0。点击可以查看对应控件预览图、该节点的子节点数(为

10、6 则有 5 个子节点)以及具体渲染时间。双击可以打开控件图。右侧是树形结构的预览、控件属性和应用界面的结构预览。点击相应的树形图中的控件可以在右侧看到他在布局中的位置和属性。工具栏有一系列的工具,保存为png 或者 psd 等工具。()layoutopt使用:创建好看的Android 布局是个不小的挑战,当你花了数小时调整好它们适应多种设备后,你通常不想再重新调整,但笨重的嵌套布局效率往往非常低下,幸运的是,在AndroidSDK中有一个工具可以帮助你优化布局,以减少内存消耗,提高应用程序运行性能。layoutoptimization优化是需要一定技巧的,性能良好的代码固然重要,但写出优秀代

11、码的成本往往也很高,你可能不会过早地贸然为那些只运行一次或临时功能代码实施优化,如果你的应用程序反应迟钝, 并且卖得很贵,或使系统中的其它应用程序变慢,用户一定会有所响应,你的应用程序下载量将很可能受到影响。在开发期间尽早优化你的布局是节省成本,提高性能的简单方法,AndroidSDK带来了一个工具,它可以自动分析你的布局,发现可能并不需要的布局元素,以降低布局复杂度。第一步:准备工作如果想使用 Android SDK中提供的优化工具,你需要在开发系统的命令行中工作,如果你不熟悉使用命令行工具,那么你得多下功夫学习了。我们强烈建议你将Android 工具所在的路径添加到操作系统的环境变量中,这

12、样就可以直接敲名字运行相关的工具了,否则每次都要在命令提示符后面输入完整的文件路径,现在在 AndroidSDK中有两个工具目录:/tools和/platform-tools,本文主要使用位于/tools目录中的layoutopt工具,另外我想说的是,ADB工具位于 /platform-tools目录下。运行 layoutopt运行 layoutopt工具是相当简单的, 只需要跟上一个布局文件或布局文件所在目录作为参数, 需要注意的是, 这里你必须包括布局文件或目录的完整路径, 即使你当前就位于这个目录。我们来看一个简单的例子:D:dtoolseclipsearticle_wsNothingreslayoutlayoutoptD:dtoolseclipsearticle_wsNothingreslayoutmain.xmlD:dtoolseclipsearticle_wsNothingreslayoutmain.xmlD:dtoolseclipsearticle_wsNothingreslayout注意, 在上面的示例中,包含了文件的完整路径,如果不指定完整路径,不会输出任何内容,例如:D:dtoolseclipsearticle_wsNothingreslayoutlayoutop

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号