1,降低布局結(jié)構(gòu)的深度;
2,重復(fù)的布局用include獨(dú)立出來(lái);
3,merge標(biāo)簽代替布局文件中的根節(jié)點(diǎn),減少布局的嵌套;
4,將動(dòng)態(tài)加載的布局用ViewStub包包含,不需要的時(shí)候設(shè)置為View.GONE,將其隱藏起來(lái);
5,用hierarchy viewer優(yōu)化;
?
一,layout過(guò)于復(fù)雜導(dǎo)致丟幀,HierarchyViewer查找activity是否過(guò)于復(fù)雜,也可以使用手機(jī)設(shè)置里面的開(kāi)發(fā)者選項(xiàng),打開(kāi)Show GPU Overdraw等選項(xiàng)進(jìn)行觀察。
? ? ??你還可以使用TraceView來(lái)觀察CPU的執(zhí)行情況,更加快捷的找到性能瓶頸;
二,背景重復(fù)繪制,Overdraw有時(shí)候是因?yàn)槟愕腢I布局存在大量重疊的部分,還有的時(shí)候是因?yàn)榉潜仨毜闹丿B背景;
三,你需要避免在for循環(huán)里面分配對(duì)象占用內(nèi)存,需要嘗試把對(duì)象的創(chuàng)建移到循環(huán)體之外,自定義View中的onDraw方法也需要引起注意,每次屏幕發(fā)生繪制以及動(dòng)畫(huà)執(zhí)行過(guò)程中,onDraw方法都會(huì)被調(diào)用到,避免在onDraw方法里面執(zhí)行復(fù)雜的操作,避免創(chuàng)建對(duì)象。對(duì)于那些無(wú)法避免需要?jiǎng)?chuàng)建對(duì)象的情況,我們可以考慮對(duì)象池模型,通過(guò)對(duì)象池來(lái)解決頻繁創(chuàng)建與銷(xiāo)毀的問(wèn)題,但是這里需要注意結(jié)束使用之后,需要手動(dòng)釋放對(duì)象池中的對(duì)象
?
本文摘自 :https://blog.51cto.com/u