五月天堂网_免费看影片_1024手机看毛片_亚洲综合四区_男人的天堂影院_在线亚洲自拍

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > IT管理 > 詳解Android APP程序啟動(dòng)加速的方法

詳解Android APP程序啟動(dòng)加速的方法

2017-01-19 11:44:56 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

在移動(dòng)互聯(lián)網(wǎng)領(lǐng)域,Android系統(tǒng)可以說(shuō)是最常用的系統(tǒng)之一。很多APP也大都是Android系統(tǒng)的。提高程序的啟動(dòng)速度意義重大,很顯然,啟動(dòng)時(shí)間越短,用戶才越有耐心等待打開(kāi)這個(gè) App 進(jìn)行使用。反之啟動(dòng)時(shí)間越長(zhǎng),用戶則越有可能來(lái)不及等到 App 打開(kāi)就已經(jīng)切換到其他 App 了。程序啟動(dòng)過(guò)程中的那些復(fù)雜錯(cuò)誤的操作很可能導(dǎo)致嚴(yán)重的性能問(wèn)題。

中培偉業(yè)《Android APP 開(kāi)發(fā)架構(gòu)應(yīng)用實(shí)戰(zhàn)》專家蔣老師在這里就Android APP程序啟動(dòng)加速的方法進(jìn)行了介紹。

李老師指出,Android 系統(tǒng)會(huì)根據(jù)用戶的操作行為調(diào)整程序的顯示策略,用來(lái)提高程序的顯示性能。例如,一旦用戶點(diǎn)擊桌面圖標(biāo),Android 系統(tǒng)會(huì)立即顯示一個(gè)啟動(dòng)窗口,這個(gè)窗口會(huì)一直保持顯示,直到畫(huà)面中的元素成功加載并繪制完第一幀。這種行為常見(jiàn)于程序的冷啟動(dòng),或者程序的熱啟動(dòng)場(chǎng)景(程序從后臺(tái)被喚起或者從其他 App 界面切換回來(lái))。那么關(guān)鍵的問(wèn)題是,用戶很可能會(huì)因?yàn)閺膯?dòng)窗口到顯示畫(huà)面的過(guò)程耗時(shí)過(guò)長(zhǎng)而感到厭煩,從而導(dǎo)致用戶沒(méi)有來(lái)得及等程序啟動(dòng)完畢就切換到其他 App 了。更嚴(yán)重的是,如果啟動(dòng)時(shí)間過(guò)長(zhǎng),可能導(dǎo)致程序出現(xiàn) ANR。我們應(yīng)該避免出現(xiàn)這兩種糟糕的情況。

從技術(shù)角度來(lái)說(shuō),當(dāng)用戶點(diǎn)擊桌面圖標(biāo)開(kāi)始,系統(tǒng)會(huì)立即為這個(gè) App 創(chuàng)建獨(dú)立的專屬進(jìn)程,然后顯示啟動(dòng)窗口,直到 App 在自己的進(jìn)程里面完成了程序的創(chuàng)建以及主線程完成了 Activity 的初始化顯示操作,再然后系統(tǒng)進(jìn)程就會(huì)把啟動(dòng)窗口替換成APP的顯示窗口。

上述流程里面的絕大多數(shù)步驟都是由系統(tǒng)控制的,一般來(lái)說(shuō)不會(huì)出現(xiàn)什么問(wèn)題,可是對(duì)于啟動(dòng)速度,我們能夠控制并且需要特別關(guān)注的地方主要有三處:

1.Activity 的 onCreate 流程,特別是 UI 的布局與渲染操作,如果布局過(guò)于復(fù)雜很可能導(dǎo)致嚴(yán)重的啟動(dòng)性能問(wèn)題。

2.Application 的 onCreate 流程,對(duì)于大型的 App 來(lái)說(shuō),通常會(huì)在這里做大量的通用組件的初始化操作。

3.目前有部分 App 會(huì)提供自定義的啟動(dòng)窗口,這里可以做成品牌宣傳界面或者是給用戶提供一種程序已經(jīng)啟動(dòng)的視覺(jué)效果。

在正式著手解決問(wèn)題之前,我們需要掌握一套正確測(cè)量評(píng)估啟動(dòng)性能的方法。所幸的是,Android 系統(tǒng)有提供一些工具來(lái)幫助我們定位問(wèn)題。

1. 首先是 display time:從 Android KitKat 版本開(kāi)始,Logcat 中會(huì)輸出從程序啟動(dòng)到某個(gè) Activity 顯示到畫(huà)面上所花費(fèi)的時(shí)間。這個(gè)方法比較適合測(cè)量程序的啟動(dòng)時(shí)間。

2. 其次是 reportFullyDrawn 方法:我們通常來(lái)說(shuō)會(huì)使用異步懶加載的方式來(lái)提升程序畫(huà)面的顯示速度,這通常會(huì)導(dǎo)致的一個(gè)問(wèn)題是,程序畫(huà)面已經(jīng)顯示,可是內(nèi)容卻還在加載中。為了衡量這些異步加載資源所耗費(fèi)的時(shí)間,我們可以在異步加載完畢之后調(diào)用activity.reportFullyDrawn()方法來(lái)告訴系統(tǒng)此時(shí)的狀態(tài),以便獲取整個(gè)加載的耗時(shí)。

3. 然后是 Method Tracing:前面兩個(gè)方法提供了啟動(dòng)耗時(shí)的總時(shí)間,可是卻無(wú)法提供具體的耗時(shí)細(xì)節(jié)。為了獲取具體的耗時(shí)分布情況,我們可以使用 Method Tracing工具來(lái)進(jìn)行詳細(xì)的測(cè)量。

4. 最后是 Systrace:我們可以在 onCreate 方法里面添加trace.beginSection()與trace.endSection()方法來(lái)聲明需要跟蹤的起止位置,系統(tǒng)會(huì)幫忙統(tǒng)計(jì)中間經(jīng)歷過(guò)的函數(shù)調(diào)用耗時(shí),并輸出報(bào)表。

標(biāo)簽:

相關(guān)閱讀

主站蜘蛛池模板: 国产精品美女久久久久久免费 | 亚洲性夜色噜噜噜在线观看不卡 | 日韩乱码视频 | 在丈面前强制侵犯在线av | 中国av一级片 | 久草福利在线观看 | 久久免费视频1 | 91免费精品国偷自产在线在线 | 日本特黄特色大片免费视频 | www.嫩草影院 | 欧美啪啪网站 | 好姑娘韩剧在线观看西瓜 | 国产开嫩苞视频在线观看 | 91蜜桃臀久久一区二区 | 老师扒开腿 | 18国产精品福利片久久婷 | 国内精品老年人视频网站 | 伊人网五月天 | 日本欧美国产一区二区三区 | 亚洲欧洲巨乳清纯 | 雯雯的性调教日记 | 亚洲色偷偷综合亚洲AV伊人蜜桃 | 亚洲狼人在线 | 中文字幕亚洲无线码a | 波多野结衣一区二区三区AV高清 | 娇软高h哭宫交双性怀孕攻失忆 | 国产精品一级香蕉一区 | 性生交大片免费全毛片 | 影音先锋久草在线 | ab黄色片 | 青春草一本到久久综合 | 中文字幕一区二区三三 | 婷婷网址 | 大地资源网在线 | 成人精品久久日伦片大全免费 | 中文字幕欧美日韩一区 | 成在人线AV无码免观看蜜芽 | 一区二区三区国产亚洲网站 | 国产鲁鲁视频在线观看 | 成人国产一区二区三区精品不卡 | 久久机热综合热国产热中文 |