文档章节

提升Android应用开发性能的十大要点

带梦想一7飞
 带梦想一7飞
发布于 2012/08/24 09:47
字数 1925
阅读 850
收藏 13

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的电池和处理器。下面介绍的一些方法可以帮助你的应用程序“瘦身”或者说“Android提升开发性能十大要点”,以便它们在今天和明天的Android设备上最顺畅地运行。

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,这款图形化工具可以帮助你调试和找到应用程序中的性能瓶颈。不妨看看Android说明文档中介绍的一些调试工具

结束语

有许多方法可以帮助你提升Android应用程序的性能。有些需要使用特定的算法,有些依赖切实可行的调试和性能监测技巧。幸好,Android平台随带众多免费的实用工具,可以帮助你查明和消除应用程序里面的性能问题。既然有了这些工具,就要立马使用!

© 著作权归作者所有

带梦想一7飞
粉丝 19
博文 190
码字总数 99203
作品 0
朝阳
私信 提问
开发者必知:提升Android应用开发性能的十大要点

随着任何一个移动平台不断发展、围绕它的应用程序不断改进,要想开发成功,质量变得至关重要。如今,用户们要求他们决定安装到自己设备上的Android应用程序反应迅即、性能合理。如果那些应用...

冯京宝
2012/07/05
128
0
[Android] 提升Android应用开发性能的十大要点

虽然Android智能手机和平板电脑的速度一天比一天快,但是开发者必须记住一点:他们开发的应用程序仍在一种资源紧张的环境下运行,这种环境主要依赖性能与最新的台式机或笔记本电脑无法比拟的...

android技术开发
2013/07/26
265
1
技术栈中的爱马仕?Facebook发布全新JavaScript引擎:Hermes

前言 目前,用户的流畅体验是用户能长期使用某个移动客户端应用App的重要指标之一,因此,移动客户端应用App的性能问题备受关注。 最近,一个崭新的JavaScript引擎面世:Hermes,它是Faceboo...

Carson_Ho
07/17
0
0
基于Android移动平台僵尸网络模拟工具设计与实现

移动端:基于Android系统开发的应用,表层应用是基于baiduMap 路线规划app 服务端:基于python web 开发框架 django 实现。 通信信道:基于第三方SDK Jpush推送消息+自己一套加密系统 推送原...

颓废的幻想者
2015/06/29
101
0
为保证交易体验,招行选择快速适配做最新一“派”

Android 系统仍在不断进化。 随着人们对数码产品更大显示占比需求的高涨,手机全面屏时代已经不可阻挡地到来,面对各式各样的异形屏,应用开发者们似乎多了不少 “额外任务”。 在种类繁多的...

Android_开发者
2018/11/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
42
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部