性少妇vide0seⅹfree_国产剧情视频在线观看_日日碰夜夜爽_九九这里只有精品视频_性free毛茸茸偷窥videos_国产v亚洲

中培偉業(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)閱讀

主站蜘蛛池模板: 精品久久人人做人人爰 | 岛国毛片在线播放 | 一同看gv1069网 | 丝袜美腿一区二区三区在线观看 | 欧美日韩一区二区三区四区五区 | 成人免费视频看看 | 91成人在线播放 | 欧美freesex交免费视频 | 欧美激情精品久久久 | 水蜜桃视频在线观看免费 | 夜夜躁狠狠躁 | 欧美日韩精品免费观看视欧美高清免费大片 | 久久久久久久久久久一区二区 | 国产AV无码专区亚洲AV中文 | 91年精品国产 | 西西人体www大胆高清仙踪林 | 中文字幕免费视频精品一 | 韩国running away免费版 | 亚洲国产高清在线观看 | 欧美成人视| 欧美一道| 动漫被到爽动漫视频免费 | 国产电影久久久 | 国产99一区二区 | 欧美视屏 | 狠狠五月天 | 中文成人无字幕乱码精品区 | 国内自拍片| 久久三级免费 | 国内极品少妇1000激情啪啪千 | 一本一本久久aa综合精品 | 夜色精品| 国产av一区二区精品凹凸 | 亚洲AV成人综合网久久 | 另类精品 | 欧美精品第一页 | 色老板在线视频一区二区 | 在线观看网站懂得 | 欧美一区二区三区四区五区六区 | 日本黄色综艺 | 久久亚洲国产精品尤物 |