Android高效編程.ppt_第1頁
Android高效編程.ppt_第2頁
Android高效編程.ppt_第3頁
Android高效編程.ppt_第4頁
Android高效編程.ppt_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Android高效編程指南,2010年03月,兩個(gè)基本的原則,不要做不必要做的事情 盡可能的節(jié)省內(nèi)存的使用,盡可能避免創(chuàng)建對(duì)象1(Avoid Creating Objects),越少的對(duì)象創(chuàng)建意味著越少的垃圾回收,這會(huì)提高你程序的用戶體驗(yàn)質(zhì)量。 例子: 盡量少創(chuàng)建沒用的臨時(shí)變量:,盡可能避免創(chuàng)建對(duì)象2(Avoid Creating Objects),盡量使用一維數(shù)組代替多維數(shù)組(將多維數(shù)組分割成幾個(gè)平行的一維數(shù)組): 如:兩個(gè)平行的Foo和Bar要比一個(gè)(Foo,Bar)對(duì)象數(shù)組的效率高得多,使用原生方法(Use Native Methods),盡量使用對(duì)象自身帶有的接口方法,因?yàn)檫@些方法有些

2、是使用C編寫的,比自己用Java編寫的效率高。 如String.indexOf()、String.lastIndexOf(),使用實(shí)現(xiàn)優(yōu)于使用接口(Prefer Virtual Over Interface),1、Map myMap1 = new HashMap();/常規(guī)編程 2、HashMap myMap2 = new HashMap();/嵌入式編程 接口方法的調(diào)用比實(shí)現(xiàn)類方法的調(diào)用會(huì)花費(fèi)2倍以上的時(shí)間。 多使用接口的具體實(shí)現(xiàn)類。,使用靜態(tài)優(yōu)于使用虛擬(Prefer Static Over Virtual),給方法加上static: 如果你沒有必要去訪問實(shí)例(對(duì)象)的變量,那么使你的方法

3、成為靜態(tài)方法。它會(huì)被更快的調(diào)用,因?yàn)樗恍枰粋€(gè)虛擬函數(shù)導(dǎo)向表。 給屬性加上static: 如果您的變量不需要被每個(gè)實(shí)例(對(duì)象)分享,那么使你的屬性成為靜態(tài)屬性。它會(huì)被更快的調(diào)用,因?yàn)镴VM只為靜態(tài)分配一次內(nèi)存,而非靜態(tài)變量,每創(chuàng)建一個(gè)實(shí)例時(shí), JVM就為非靜態(tài)變量分配一次內(nèi)存)。,內(nèi)在避免使用Get/Set方法(Avoid Internal Getters/Setters),外部調(diào)用時(shí)使用Get和Set函數(shù),但是在內(nèi)部調(diào)用時(shí),我們應(yīng)該直接調(diào)用。虛方法的調(diào)用比實(shí)例屬性查詢的代價(jià)還要多。,緩沖對(duì)象屬性調(diào)用(Cache Field Lookups),訪問對(duì)象屬性要比訪問本地變量慢得多。 不要這樣寫

4、: for (int i = 0; i this.mCount; i+) dumpItem(this.mItemsi); 應(yīng)該這樣寫: int count = this.mCount; Item items = this.mItems; for (int i = 0; i count; i+) dumpItems(itemsi);,聲明Final常量(Declare Constants Final),static int intVal = 42; static String strVal = Hello, world!; 當(dāng)類被創(chuàng)建時(shí),編譯器會(huì)調(diào)用一個(gè)類初始化方法,這個(gè)方法會(huì)對(duì)intVal和s

5、trVal進(jìn)行初始化處理。 可以寫成如下: static final int intVal = 42; static final String strVal = Hello, world!; 初始化是由虛擬機(jī)來處理的,所以類的創(chuàng)建將更快。,慎重使用增強(qiáng)型For循環(huán)語句(Use Enhanced For Loop Syntax With Caution),增強(qiáng)的for循環(huán)在數(shù)組里面性能很好,但是當(dāng)和Iterable對(duì)象一起使用時(shí)要謹(jǐn)慎,因?yàn)檫@里多了一個(gè)對(duì)象的創(chuàng)建。,避免使用枚舉(Avoid Enums),public class Foo public enum Shrubbery GROUND, CRAWLING, HANGING 這會(huì)轉(zhuǎn)變成為一個(gè)900字節(jié)的class文件(Foo$Shrubbery.class)。第一次使用時(shí),類的初始化要在獨(dú)享上面調(diào)用方法去描述列舉的每一項(xiàng),每一個(gè)對(duì)象都要有它自身的靜態(tài)空間,整個(gè)被儲(chǔ)存在一個(gè)數(shù)組里面(一個(gè)叫做“$VALUE”的靜態(tài)數(shù)組)。那是一大堆的代碼和數(shù)據(jù),僅僅是為了三個(gè)整數(shù)值,代價(jià)很高。,通過內(nèi)聯(lián)類使用包空間(Use Package Scope with Inner Classes),建議使用內(nèi)部類。,避免浮點(diǎn)類型的使用(Avoid Float),盡量避免使用floa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論