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能夠提升性能.