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