Android应用性能优化笔记(java代码优化)
Java代码优化
缓存结果:
如果计算代价过高,最好把过去的结果缓存起来。
伪代码如下:
result=cache.get(n); //输入参数n作为键
if(result==null)
{
//如果在缓存中没有result值,就计算出来填进去
result=computeResult(n);
cache.put(n,result); //n作为键,
}
return result;
你可能打算一个HashMap充当缓存,它可以胜任这项工作.不过,Android定义了SparseArray类,当键是整数时,它比HashMap效率更高。
因为HashMap 使用的是java.lang.Integer对象,而SparseArray使用的是基本类型int.因此使用HashMap会创建很多Integer对象,而使用
SparseArray则可以避免.
API
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB)
{
sparseArray.removeAt(1); //API等级11及以上
}
else
{
int key=sparseArray.keyAt(1); //默认实现慢一些
sparseArray.remove(key);
}
这类代码很常用,它既可以使用最适当的API来获取最好性能,也可以在旧的平台上(可能使用了较慢的API)正常运行.
数据结构:
如果你使用基于散列的数据结构(例如HashMap),而且键是自定义的对象,确保你正确覆盖了类定义中的equal和hashCode
方法。hashCode的低劣实现可以轻易将散列的收益化为乌有.
每当Android新版本的发布,都要特别注意android.util包和java.util包.(因为几乎所有的组件依赖这两个工具箱).
响应能力:
应用可以延迟创建对象,直到需要时才创建,称为推迟初始化的技术.
为Activity优化启动序列:
onCreate->onStart->onResume (这个序列发生在创建Activity时),当配置发生变化时,当前Activity被销毁,并创建一个新实例,会调用
以下序列:onPause->onStop->onDestory->onCreate->onStart->onResume
应用可以在mainfest文件里指定每个Activity元素的Android:configChanges属性,让它只接受自己想处理的配置变化。这会导致
调用Activity的onConfigurationChanged(),而不是销毁.
通常情况下,在应用启动时,既当onCreate()被调用时,启用StrictMode。
SQLite
使用+运算符来连接字符串不是最有效的方法,而使用StringBuilder对象,或调用String.format可以提高性能.
Android应用性能优化笔记(java代码优化)的更多相关文章
- Android App性能优化笔记之一:性能优化是什么及为什么?
By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...
- Androidi性能优化之Java代码优化(摘自Android性能优化一书)
代码优化不是应用开发的首要任务,提供良好的用户体验并专注于代码的可维护性,这才是你的首要任务.事实上,代码优化应该是最后才做,甚至完全可能不去做,不过,良好的优化可以使程序性能直接达到一个可接受的水平 ...
- 性能优化之Java(Android)代码优化
最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...
- Android应用性能优化(转)
人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...
- Android App 性能优化实践
本文记录了Android App优化需要用到的工具和以及在实践中的Tips.也算对我这半年来部分工作的总结. 工具 Hierarchy Viewer 是 Android SDK 自带的 Layout ...
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...
- Android APP 性能优化的一些思考
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- android app性能优化大汇总
这里根据网络上各位大神已经总结的知识内容做一个大汇总,作为记录,方便后续“温故知新”. 性能指标: (1)使用流畅度: 图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染.高的帧率可以 ...
随机推荐
- 核心思想:百度网盘怎么盈利(互联网的高速更新决定了:亏钱你还有点机会,放弃连门都进不了),战略预备队 good
百度做网盘很大程度就是为了防止别人依靠网盘做大和积累点技术储备.腾讯邮箱怎么赚钱?腾讯影音怎么赚钱?互联网的高速更新决定了,一些你看不起眼的软件很可能就会席卷整个市场,所以互联网大佬宁愿一些项目亏钱也 ...
- WCF入门(七)---自托管消费WCF服务
费自托管WCF服务的整个过程,一步步地解释以及充足的编码和屏幕截图是非常有必要. 第1步:服务托管,现在我们需要实现的代理类客户端.创建代理的方式不同. 使用svcutil.exe,我们可以创建代理类 ...
- C# Java间进行RSA加密解密交互(二)
原文:C# Java间进行RSA加密解密交互(二) 接着前面一篇文章C# Java间进行RSA加密解密交互,继续探讨这个问题. 在前面,虽然已经实现了C# Java间进行RSA加密解密交互,但是还是与 ...
- servlet会话技术:Session
问题的引出 1.在网上购物时,张三和李四购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎么实现的呢? 2.不同的用户登录网站后,不管该用户浏览该网站的那个页面,都可以显示登录人的名字,同时可 ...
- android自动更新软件版本
根据网上的然后小改 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import j ...
- input默认提示取消
input 输入框有提示功能,当你之前输入过一些内容,你下次打入相关字符的时候,默认会有之前输入的一些相关的字符的提示,这个提示一般来说还是很好的,但是,有时候,我们想自己输入,不想要提示. 如果不需 ...
- trackr: An AngularJS app with a Java 8 backend – Part I
该系列文章来自techdev 我想分享在techdev公司开发的项目-trackr-的一些最新的见解.trackr是一个用来跟踪我们的工作时间,创建报告和管理请假的web应用程序.做这个程序的目的有两 ...
- TCSRM 593 div2(1000)(dp)
Problem Statement The pony Rainbow Dash wants to choose her pet. There are N animals who want t ...
- poj 2411 Mondriaan's Dream(状态压缩dP)
题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...
- android完全退出应用程序
android 完全退出应用程序android android 退出应用程序, 单例模式管理Activity引自:http://www.yoyong.com/archives/199android 退 ...