提高android应用程序性能的5个注意事项


需要花很长时间的操作应当运行在他们自己的线程中而不是主线程中。当运行在主线程中的操作如果需要花很长时间,Android OS也许会弹出一个无响应的对话框(ANR):这个对话框引导用户是关闭还是继续等待你的应用程序。这个消息不是非常友好的,并且你的应用程序应该永远不出现出发它。通常来说,web服务调用一个扩展的API对这个是特别敏感的,并且应当总是运行在他们自己的线程中,因为网速慢或者它们的结束有问题都会出发ANR,阻塞你的应用程序执行。你也能利用提前计算图形的线程在主线程后面展示图形。


如果你的应用程序需要调用许多扩展API,如果wifi和蜂窝网络不是可用的,那就避免一次又一次的地搜用API。准备真个请求,发送完毕并且当它确定失败时等待一个超时,这些是非常浪费资源的。你能有规律的链接连接的状态,如果没有网络可用,那转换成一个离线模式,并且在网络会来时尽可能快的重新激活它。


利用缓存减少昂贵操作的影响。计算虽然是长的,但是对于保存在内存中这样一个重复利用的结果,将不会回改变或者绘制。你也能缓存扩展API的结果到一个本地数据库中,因此你不能依赖这些资源在所有时间都可用。从本地数据库调用会更快,将不会上传你的用户的数据,而且甚至在设备离线时也能工作。换句话说,你有时应当计划一种的刷新数据的方式,例如,保存一个时间和日期阙,并且当它变过期的时候刷新数据。


保存你的activity的状态当应用程序重新被打开的时候避免重新计算它。通过你的activity数据被载入或者任何长时间运行的结果应当被保存,当onSaveInstanceState事件被唤起并且当onRestoreInstanceState事件被唤起时数据被恢复。用一个序列化的Bundle对象保存状态的最容易的方式是管理的状态必须有一个包含所有信息的序列化状态对象,这个对象是恢复activity的,因此只有这个对象需要被保存。用户在视图控制中输入的信息已经自动的通过Android SDK被保存,并且不需要保存状态。记住,不仅仅是当用户导航到另一个activity时,而且当用户离开你的应用程序或者翻转屏幕时,这个activity的状态也许丢失。


确保你的布局是尽可能简单的,没有不需要的布局元素。当视图结构变的太深,UI引擎会在转换所有视图和计算所有元素的位置时有困难。例如,如果你创建了一个自定义的控制,并且包含了另一个布局元素,它会添加一个不是必须的额外的视图来展现UI并且将明显的拖慢了程序速度。使用Hierarchy Viewer工具,你能分析你的视图结构去看你的布局的哪里可以被优化。这个工具能从Eclipse中被打开,在DDMS中使用UI Automator图标的Dump View Hierarchy,或者在<sdk>\tools\目录下独立的运行工具hierarchyviewer。


如果在你的应用程序中你有其它未被解释的速度慢,你应当分析它来帮助识别这个瓶颈。在那种情况下,你应当看看我的文章profiling Android applications.


原文地址:http://www.javacodegeeks.com/2014/06/5-tips-to-improve-performance-in-android-applications.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值