一框沟、啟動(dòng)優(yōu)化
Activity啟動(dòng)形式分為三種類型:熱啟動(dòng)、冷啟動(dòng)增炭、溫啟動(dòng)忍燥。重點(diǎn)在冷啟動(dòng)。
假優(yōu)化:欺騙用戶隙姿,去掉黑白屏梅垄,看上去達(dá)到了優(yōu)化的效果,實(shí)際上并沒有输玷;
真優(yōu)化:從根本上解決啟動(dòng)慢的問題队丝;閃屏頁的預(yù)覽window,三方庫的初始化(延遲初始化欲鹏,異步初始化)
檢測工具:traceview
二机久、繪制優(yōu)化
cpu計(jì)算矢量圖交給gpu繪制bitmap,垂直同步機(jī)制赔嚎,16ms之內(nèi)要繪制完畢膘盖,否則會(huì)出現(xiàn)丟幀,出現(xiàn)卡頓尤误;
feed(在列表的第一個(gè)條碼繪制完成之后開始剩下的網(wǎng)絡(luò)請(qǐng)求)? cpu空閑處理任務(wù)?
減少布局層級(jí)(include merge viewstub)
避免過度繪制 去掉不必要的背景顏色
工具:strictmode
三侠畔、內(nèi)存優(yōu)化
anr oom 內(nèi)存泄露 內(nèi)存抖動(dòng)
activity 5s??
service 前臺(tái)10s 后臺(tái)20s
broadcast 前臺(tái) 20s 后臺(tái)60s
如何檢測anr? ?system/data/traces.txt 系統(tǒng)記錄anr的日志,但是只會(huì)保存三天
三方框架的檢測原理:looper處理消息前后都會(huì)調(diào)用logging.print();可以把這個(gè)log替換為自己的袄膏。從而來記錄每一個(gè)事件處理的時(shí)長践图。
有的框架是往messagequeue里面放一個(gè)消息,這個(gè)消息的處理結(jié)果就是計(jì)數(shù)加一沉馆,五秒后去檢測這個(gè)消息有沒有被處理码党,如果沒有被處理就會(huì)被認(rèn)為是anr
memoryprofile mat? leakcanary?
四、電量優(yōu)化
避免后臺(tái)耗時(shí)操作
要精確統(tǒng)計(jì)用戶耗電狀態(tài)斥黑;
五揖盘、網(wǎng)絡(luò)優(yōu)化
流量優(yōu)化:數(shù)據(jù)的壓縮,緩存锌奴,圖片一定要壓縮兽狭;
網(wǎng)絡(luò)質(zhì)量:請(qǐng)求速度,請(qǐng)求成功率,兩個(gè)方面箕慧;
dns解析過程優(yōu)化服球, 消息格式優(yōu)化,
線上統(tǒng)計(jì)颠焦,線下優(yōu)化斩熊;
網(wǎng)絡(luò)請(qǐng)求使用增量更新;
http協(xié)議版本的選擇 1.0(沒有復(fù)用) 1.1(雖有復(fù)用伐庭,但是排隊(duì)執(zhí)行粉渠,如果有一個(gè)卡住,其他的任務(wù)也都會(huì)卡谆怼) 2.0(實(shí)現(xiàn)了復(fù)用的同時(shí)霸株,可以并行請(qǐng)求)
六、線程優(yōu)化
線程的使用集乔,推薦使用線程池去件,最好給每個(gè)線程起一個(gè)名字,在執(zhí)行任務(wù)的時(shí)候就知道是什么線程
線程池的核心數(shù)參考asynctask
還可以設(shè)置線程池的優(yōu)先級(jí)饺著,比較重要的任務(wù)設(shè)置比較高 的優(yōu)先級(jí)箫攀;