1.提升Android应用性能注意要点
第一个要点:首先要有良好的编程习惯
要成为一名优秀的资源管理员;既要运用常识,还要使用公认的算法和标准的设计模式。在资源使用方面,如果你打开了资源,要记得关闭资源。要尽量晚地获取,尽量早地释放。这些由来已久的编程准则同样适用于你的Android应用程序,如果它们使用底层的设备服务,更是如此。
比如说,假设你编写的一个应用程序依赖基于位置的服务。除非你绝对有必要,否则不要开始注册、获取位置最新信息;而且要确保,一旦你不再需要这些信息,就要取消获取最新信息的注册。这将帮助你避免不必要地耗费设备电池电量或占用系统资源。
第二个要点:让阻塞操作远离主用户界面线程
想确保你的应用程序运行起来很灵活,就要使用AsyncTask、线程、IntentService或自定义后台服务来处理脏活。应使用装入器来简化装入时间长的数据(如游标)的状态管理。你无法容忍你的应用程序在某个操作正在处理的时候出现滞后或停顿。
如果某个操作很费时间和资源,就要卸载这部分操作、对它进行异步处理,那样你的应用程序仍保持响应迅即,用户可以处理他们的事务。这个原则适用于下列操作:磁盘读写,访问内容提供方、数据库和互联网,以及解析和其他长时间的任务。
第三个要点:使用最新的Android软件开发工具包(SDK)版本、应用编程接口(API)和最佳实践
确保你开发的应用程序是最新的,因而要使用Android平台提供的最新工具。随着Android平台不断发展,它也在不断改进。一些功能 可能已被弃用,或者换成了更好的功能。核心API得到了修正版(bug fix)和性能改进。已经引入了装入器等新的API,帮助开发者编写出运行更稳定、响应更迅即的应用程序。
你知道可以启用Android3.0应用程序中的硬件加速功能吗?赶紧启用吧!要明白最佳实践会随着时间的变化而变化。明智的开发者密切关注Android平台的新功能、哪些功能不再被推荐。
第四个要点:考虑使用限制模式(Strict Mode)
你可以使用名为限制模式(StrictMode)的AndroidAPI,帮助你查明哪里违反了几个良好的编程习惯。StrictMode 会帮助你确认你的应用程序是不是存在内存泄漏,并且检测你的应用程序是不是在试图执行长时间的阻塞操作,这些操作应该被卸载到线程或别的渠道(参阅第二个 要点)。
Android2.3里面引入StrictMode类(android.os.StrictMode)。
第五个要点:在发布应用程序之前,禁用或尽量少用调试和诊断
如果你的Android应用程序开发起来需要一些时间,你可能已将一些日志和调试代码嵌入到了应用程序中。写入到日志及其他此类输出系统给性能带来了影响。确保在发布应用程序之前,尽量少用或完全禁用这些功能。
现在不妨说说如何运用良好的用户界面设计原则,让你应用程序的屏幕更快速地装入:
第六个要点:确保你设计的布局简单、简练和浅层
简单的屏幕有助于阅读起来最轻松,而简单的布局装入起来最快速。你不应该过于深层地嵌套你的布局,或者用不必要的过多视图(View)控件 塞满屏幕。花些时间来开发用户可以高效使用的简练用户界面,而不是试图把太多功能塞入到单单一个屏幕上。这不但有助于提升应用程序的性能,还有助于让你的 应用程序对用户来说更高效。
Fragments有助于在不影响灵活地针对不同类型的设备进行设计的情况下,划分用户界面功能。
第七个要点:让你应用程序的资源适合目标设备
添加适合特定设备配置的资源,那样它们就能尽可能高效地装入。我们在谈论图形资源时,这点尤为重要。如果你添加了可利用的庞大图像资源,需要装入和调整大小,就无法有效地使用其他的应用程序资源。
另一个要点就是,如果你准备你的应用程序可以在许多设备上运行,为了让应用程序软件包文件保持合理的大小,应该最初只添加运行应用程序所需要的核心资源,然后让应用程序下载适合该设备的内容。
第八个要点:使用Hierarchy Viewer工具
Hierarchy Viewer工具可以帮助你调试你的应用程序布局。它还提供了宝贵的分析信息,以便了解布局里面的每一个视图控件测量、渲染和绘制要花多少时间。只有准确找到了问题的根源,问题解决起来才容易。
第九个要点:使用layoutopt工具
Layoutopt工具是一款简单的命令行工具,它可以帮助你找到不必要的控件嵌套以及缩减布局资源的其他方法,以便尽量减少资源的使用。它让你可以了解哪些布局控件可能是多余的或不必要的。控件越少、布局层次越浅,性能就越好。
最后,你认为你的应用程序做到了最好吗?现在该对它测试一下了。
第十个要点:使用Traceview及其他Android工具进行分析
Android SDK随带了许多工具,可用来对你的应用程序进行分析。其中最流行的工具恐怕莫过于Traceview,这款图形化工具可以帮助你调试和找到应用程序中的性能瓶颈。
2.性能优化
1.http用gzip压缩,设置连接超时时间和响应超时时间
http请求按照业务需求,分为是否可以缓存和不可缓存,那么在无网络的环境中,仍然通过缓存的httpresponse浏览部分数据,实现离线阅读。
2.listview 性能优化
1).复用convertView
在getItemView中,判断convertView是否为空,如果不为空,可复用。如果couvertview中的view需要添加listerner,代码一定要在if(convertView==null){}之外。
2).异步加载图片
item中如果包含有webimage,那么最好异步加载
3).快速滑动时不显示图片
当快速滑动列表时(SCROLL_STATE_FLING),item中的图片或获取需要消耗资源的view,可以不显示出来;而处于其他两种状态(SCROLL_STATE_IDLE 和SCROLL_STATE_TOUCH_SCROLL),则将那些view显示出来
3.使用线程池
分为核心线程池和普通线程池,下载图片等耗时任务放置在普通线程池,避免耗时任务阻塞线程池后,导致所有异步任务都必须等待
4.异步任务
分为核心任务和普通任务,只有核心任务中出现的系统级错误才会报错,异步任务的ui操作需要判断原activity是否处于激活状态
5.尽量避免static成员变量引用资源耗费过多的实例,比如Context
6.使用WeakReference代替强引用
弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。
7.超级大胖子Bitmap
及时的销毁(Activity的onDestroy时,将bitmap回收)
设置一定的采样率
巧妙的运用软引用
drawable对应resid的资源,bitmap对应其他资源
8.保证Cursor占用的内存被及时的释放掉,而不是等待GC来处理
并且 Android明显是倾向于编程者手动的将Cursor close掉。
9.线程也是造成内存泄露的一个重要的源头
线程产生内存泄露的主要原因在于线程生命周期的不可控,合理使用多线程。
10.如果ImageView的图片是来自网络,进行异步加载
11.自定义View
应用开发中自定义View的时候,交互部分,千万不要写成线程不断刷新界面显示,而是根据TouchListener事件主动触发界面的更新
相关推荐
Android应用性能优化 开发优秀的Android应用必备指南
Android 性能调优是 Android 应用程序开发中非常重要的一方面。为了提高 Android 应用程序的性能,需要从多方面考虑,包括设计思想、代码质量优化、设计模式、数据结构等。下面我们就这些方面的知识点进行总结。 ...
根据提供的信息,我们可以推断出《Android应用开发揭秘》这本书主要涵盖了Android应用程序的开发流程及相关技术,适合初学者作为入门指南。尽管具体内容未给出详细章节或摘要,但基于标题、描述及常见Android开发...
从提供的文件信息中可以提取的知识点非常有限,且主要是关于获取技术书籍资源的信息,关于标题“Android应用开发揭秘pdf”和标签“Android 应用开发”的实质性内容并未提供。但尽管如此,我们可以根据这些有限的信息...
《Android应用开发》还对Android平台下开发环境的搭建、程序的签名和发布以及程序调试和性能优化所用到的工具和方法等进行了讲解。 《Android应用开发》适合有一定程序设计基础并致力于从事Android平台应用软件开发...
【Android应用开发实践教程】是针对Android开发人员的实践指南,由韩冬编写,旨在帮助初学者和有经验的开发者掌握Android应用的开发流程。在这个教程中,作者将引导我们通过使用Android Studio 2.2.3这个集成开发...
在Android开发领域,高通平台因其高性能和广泛的应用而备受关注。本文将深入探讨在高通平台上进行Android系统开发的相关知识点,包括bootloader、kernel以及Android应用层的开发经验。 一、Bootloader Bootloader...
《Android应用开发》还对Android平台下开发环境的搭建、程序的签名和发布以及程序调试和性能优化所用到的工具和方法等进行了讲解。, 《Android应用开发》适合有一定程序设计基础并致力于从事Android平台应用软件开发...
第三部分高级篇:讲解了Android开发中的高级技术,包括各种常用的Android资源、通信功能的开发、数据库、蓝牙与Wi-Fi、第三方程序库、2D绘图技术、OpenGLES绘图技术、Android的编译,以及Android的性能优化方法和...
《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些...
这篇详细的讲解将涵盖Android应用开发的基础概念、开发环境搭建、UI设计、数据存储、网络通信、多线程处理以及性能优化等多个方面。 首先,基础概念是学习Android开发的起点。Android是一个基于Linux内核的操作系统...
1. Android开发基础:这涉及到Android应用开发的准备工作,比如安装Android Studio开发环境,创建新的项目,了解项目的基本结构和文件类型。 2. 应用生命周期:Android应用有其生命周期,包括创建、暂停、恢复和...
本文旨在帮助菜鸟开发者快速入门 Android 应用开发,提供了详细的流程和经验总结。 准备工作 在开始 Android 应用开发之前,需要具备以下技能: 1. Java:掌握 Java 是 Android 应用开发的基础,建议掌握 Java 的...
书中详细阐述了Android开发的关键知识点,包括数据存储、数据共享、多媒体应用开发、蓝牙通信、网络通信问题解决、硬件接口利用、Widget开发、UI界面设计、XML数据处理、3D应用开发、游戏引擎设计、应用性能优化以及...
2. JSON解析:Android应用程序经常需要与服务器交换JSON格式的数据。书中介绍了使用Gson和Jackson库进行JSON序列化和反序列化的技巧,以及如何手动解析JSON对象和数组。 3. 网络状态管理:Android设备的网络环境...
"高通平台Android开发总结"文档很可能是对在高通芯片上进行Android应用和系统开发经验的全面总结,提供了深入的技术见解和实践指南。下面我们将详细探讨与这个主题相关的一些关键知识点。 1. 高通平台特性: - ...
总之,《Android应用开发详解》涵盖了Android开发的各个方面,无论是初学者还是有经验的开发者,都能从中受益。通过学习这本书,你可以掌握完整的Android开发技能,开发出高质量、用户体验优秀的Android应用。
从给定的文件信息来看,该文档主要围绕“Android应用开发基础教程”展开,详细介绍了在Windows操作系统上搭建Android开发环境的过程,特别是针对Android 2.3版本的应用开发。以下是对文档中提到的关键知识点的深入...
《Android开发艺术探索》是一本深受Android开发者喜爱的书籍,由尹吉欢撰写,全面而深入地探讨了Android应用开发的各个重要方面。这本书旨在帮助读者提升Android开发技能,掌握更多的实践技巧,以及理解Android系统...