性能優(yōu)化之App啟動優(yōu)化

一秸苗、前記

? ? ? ? 隨著技術(shù)的迭代,許多三方SDK一涌而出运褪,統(tǒng)計(jì)惊楼、推送玖瘸、IM、BUG監(jiān)控等檀咙,導(dǎo)致我們現(xiàn)在項(xiàng)目中的Application很臃腫雅倒,在onCreate方法中各種初始化,最后導(dǎo)致App啟動非常緩慢攀芯,初始化一個(gè)推送需要2秒時(shí)間屯断,初始化百度地圖需要3秒時(shí)間,初始化.....各種加在一起就N秒了侣诺,啟動應(yīng)用殖演,等待如此漫長,最后的結(jié)果年鸳,用戶不干了趴久,本篇文章就是講解如何優(yōu)化App啟動。

二搔确、初識App啟動

? ? ? ? 從源碼了解彼棍,我們的手機(jī)屏幕其實(shí)就是一個(gè)大的app,上面每一個(gè)應(yīng)用都是一個(gè)Activity膳算,在我們點(diǎn)擊屏幕App應(yīng)用座硕,系統(tǒng)通知ActivityManagerService來操作一系列事情,這一塊我們是沒法優(yōu)化的涕蜂,我們能優(yōu)化是Application與啟動頁华匾,為什么啟動會慢,我們先來看項(xiàng)目中Application的代碼机隙。

Application中onCreate代碼

基本上我們都會在Application中做這種類似的操作(以上代碼來自GitHub某個(gè)Demo)蜘拉,我啟動該應(yīng)用,發(fā)現(xiàn)會白屏一段時(shí)間有鹿,啟動耗時(shí):8s旭旭。如果說是因?yàn)轫?xiàng)目大而啟動慢,我們打開QQ或者微信發(fā)現(xiàn)葱跋,他們非吵旨模快,所以這個(gè)說法不成立年局,那么原因出在哪里际看。當(dāng)前在前面就說了,是由于Application初始化太多控件所導(dǎo)致的矢否,那么哪個(gè)控件耗時(shí)較多仲闽,在哪一步導(dǎo)致這個(gè)問題,這個(gè)我們并不知道僵朗,所以我們先用Trace文件來統(tǒng)計(jì)耗時(shí)情況赖欣,代碼很簡單屑彻。兩句代碼。如下圖顶吮,在Application的onCreate中加入代碼社牲。

添加統(tǒng)計(jì)后的代碼

? ? ? ? 看圖中兩個(gè)箭頭在SDk初始化前開始執(zhí)行,完成后停止統(tǒng)計(jì)悴了。添加以上代碼搏恤,然后運(yùn)行程序,會在手機(jī)sdcard里生成一個(gè)startTIme.trace文件湃交。接下來我們用cmd命令熟空,把他拖到電腦桌面。如下圖

cmd命令


桌面trace文件

怎么打開他呢搞莺,直接丟到androidStudio里面息罗,如下圖

通過這個(gè)圖我們可以看到,標(biāo)1的是執(zhí)行次數(shù),一些方法指令的次數(shù)才沧,標(biāo)2的為耗時(shí)操作迈喉,在耗時(shí)這邊,推送要3.4秒加載時(shí)間温圆,地圖要2.9秒加載時(shí)間挨摸,bug監(jiān)控1.2秒加載時(shí)間,這一塊占據(jù)了7.6秒岁歉,那如何優(yōu)化油坝,接下來我們開始去優(yōu)化這段代碼。

三刨裆、App啟動優(yōu)化

? ? ? ? ? ?在這邊優(yōu)化的方式有多種,延遲加載彬檀、開啟子線程等帆啃。。這些要根據(jù)原因而定窍帝。因?yàn)槲宜眠@些SDK沒有處理Handler努潘,可以直接放到線程里面去工作。如何優(yōu)化坤学,如下圖:

優(yōu)化后的Application

把耗時(shí)操作丟到線程里頭疯坤,等然后在啟動頁的onCreate里面調(diào)用。

看下優(yōu)化過后的啟動時(shí)間:0.04秒深浮,快的不行压怠。

優(yōu)化后的trace

接下來大功告成了嗎,No飞苇,還沒有菌瘫,因?yàn)橛捎谶^快蜗顽,還是有閃的動作,怎么著雨让,最后參考了QQ的做法雇盖,在Theme樣式中加上這兩個(gè)屬性,一個(gè)是設(shè)置透明栖忠,一個(gè)是不要背景圖〈尥冢現(xiàn)在點(diǎn)擊就沒有閃屏的現(xiàn)象,直接進(jìn)入啟動頁庵寞。

主題加入的屬性

啟動優(yōu)化就到這里狸相。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市皇帮,隨后出現(xiàn)的幾起案子卷哩,更是在濱河造成了極大的恐慌,老刑警劉巖属拾,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件将谊,死亡現(xiàn)場離奇詭異,居然都是意外死亡渐白,警方通過查閱死者的電腦和手機(jī)尊浓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纯衍,“玉大人栋齿,你說我怎么就攤上這事〗笾睿” “怎么了瓦堵?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歌亲。 經(jīng)常有香客問我菇用,道長,這世上最難降的妖魔是什么陷揪? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任惋鸥,我火速辦了婚禮,結(jié)果婚禮上悍缠,老公的妹妹穿的比我還像新娘卦绣。我一直安慰自己,他們只是感情好飞蚓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布滤港。 她就那樣靜靜地躺著,像睡著了一般趴拧。 火紅的嫁衣襯著肌膚如雪蜗搔。 梳的紋絲不亂的頭發(fā)上劲藐,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音樟凄,去河邊找鬼聘芜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缝龄,可吹牛的內(nèi)容都是我干的汰现。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼叔壤,長吁一口氣:“原來是場噩夢啊……” “哼瞎饲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炼绘,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗅战,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后俺亮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驮捍,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年脚曾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了东且。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡本讥,死狀恐怖珊泳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拷沸,我是刑警寧澤色查,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站撞芍,受9級特大地震影響综慎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜勤庐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望好港。 院中可真熱鬧愉镰,春花似錦、人聲如沸钧汹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拔莱。三九已至碗降,卻和暖如春隘竭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讼渊。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工动看, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爪幻。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓菱皆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挨稿。 傳聞我的和親對象是個(gè)殘疾皇子仇轻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容