本著針對(duì)面試,不負(fù)責(zé)任的態(tài)度蝶糯,寫下《面試總結(jié)》系列洋只。本系列記錄面試過(guò)程中各個(gè)知識(shí)點(diǎn),而不是入門系列昼捍,如果有不懂的自行學(xué)習(xí)识虚。
大致分為四點(diǎn)去回答《什纾快担锤、穩(wěn)、小乍钻、省
1. 快
啟動(dòng)快肛循,加載快铭腕,避免卡頓
基本操作
- 主線程不做耗時(shí)操作
- application里對(duì)必要的三方庫(kù)延遲初始化(延遲加載,異步加載多糠,分布加載)
- 啟動(dòng)白屏優(yōu)化
View優(yōu)化
- View 布局(viewstub,include,merge,層級(jí)深)
- 復(fù)雜頁(yè)面細(xì)分優(yōu)化
- 過(guò)度繪制的優(yōu)化
- xml中無(wú)用的背景不設(shè)置
- 控件無(wú)用屬性刪除
內(nèi)存優(yōu)化
- 頁(yè)面切換累舷,前后臺(tái)切換
- fragment的懶加載
- 必要的緩存
- 空間換時(shí)間
- 四大引用的合理使用
- 減小不必要的內(nèi)存開銷
- 數(shù)據(jù)bean的合理定義
- ArrayList、HashMap的使用
- 線程池夹孔、bitmap被盈、view的復(fù)用
- 不用的大對(duì)象主動(dòng)設(shè)置null
代碼優(yōu)化
- for循環(huán)內(nèi)不定義對(duì)象
- 使用文件IO代替數(shù)據(jù)庫(kù)
- 自定義Drawable不在draw()里面創(chuàng)建對(duì)象操作
- 類中沒(méi)有使用到成員變量的方法可以設(shè)置static
2. 穩(wěn)
穩(wěn)定不崩潰,減小crash搭伤,避免anr
- 主線程不做耗時(shí)操作
- activity 5秒只怎、broadcast 10秒、service 20秒
- 資源對(duì)象及時(shí)關(guān)閉(Cursor怜俐,F(xiàn)ile)
- Handler的處理
- 避免內(nèi)存泄露
- crash上傳機(jī)制
- WebView的內(nèi)存泄露
3. 小
安裝包小
- 代碼混淆(proguard)
- 資源優(yōu)化(lint)
- 圖片優(yōu)化(mipmap/webp)
4. 省
省電省流量
- 接口定義
- 接口緩存
性能分析工具
MAT/TracView/LeakCanary/blockCanary/MemoryMonitor/HeapViewer