Java代码优化java
缓存结果: android
若是计算代价太高,最好把过去的结果缓存起来。缓存
伪代码以下:数据结构
result=cache.get(n); //输入参数n做为键工具
if(result==null)性能
{优化
//若是在缓存中没有result值,就计算出来填进去ui
result=computeResult(n);spa
cache.put(n,result); //n做为键,orm
}
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能够提升性能.