天天看點

(轉)編寫高效的Android代碼(提高運作速度,節省電量)

1.避免建立對象,特别是循環啦之類的不能建很多臨時的對象,開銷銷毀都很耗性能。

2.盡量避免使用多元數組,如果不是開發api的話盡量使用一維數組代替多元數組。

3.很多時候注意使用java自帶的api方法,因為大部分api方法都經過了非常良好的設計,甚至調用了底層的c/c++方法,性能友善比較有保證。

4.聲明對象時最好用具體類來聲明。雖然使用接口聲明更能使程式松耦合,但是要注意調用一個接口的引用會比調用實體類的引用多花費一倍的時間。

5.用靜态方法比用虛方法好。如果你不需要通路一個對象的成員變量,那麼請把方法聲明成static。因為它可以被直接調用而不需要一個虛函數表。

6.如非非常必要,請直接通路對象的變量而不是getter和setter。虛方法的開銷比直接通路成員變量大得多。

7.應該少去通路成員變量,通常将成員變量緩存到本地(方法)。通路成員變量比通路本地變量慢得多。

8.注意永遠不要在for循環的第二個條件中調用任何方法,這是很低級的優化失誤。

9.方法的參數與本地變量的效率相同。

10.如果變量值不變或者方法不可能被重寫,請盡量聲明成final形式。

11.謹慎使用jdk1.5提供的foreach文法,雖然它進行一些儲存到本地變量的優化,但是會産生一些額外的對本地變量的存儲操作,速度要稍微慢一些。

12.枚舉變量非常友善,但不幸的是它會犧牲執行的速度和并大幅增加檔案體積。(枚舉不是很熟,發完文章後馬上去補習。。)

13.将與内部類一同使用的變量聲明成非private形式。因為雖然内部類可以通路外部類的private變量和方法,但是java内部通路過程是通過生成另一個非private變量或方法來進行通路的,為了避免這種内部的生成,如不是很必要,請不要讓内部類去通路外部類的private變量或方法。

14.避免使用浮點數運算和除法運算。很多嵌入式處理器是不支援浮點運算的。甚至很多嵌入式晶片都不支援整數的除法和取模運算。

http://www.eoeandroid.com/thread-629-1-1.html