性少妇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)閱讀

主站蜘蛛池模板: 成人高潮视频在线观看 | caoprom在线| A久久精品国产精品亚洲 | 成年女人毛片永久观看 | 高挑美女被遭强高潮视频 | 国产乱视频网站 | 欧美一级射精凶 | 欧美日韩一区二区三区在线观看 | 日韩精品成人a在线观看 | 麻豆一区二区三区四区 | 亚洲男人天堂av在线 | 91精产国品一二三区 | 日韩激情一级毛片久久久 | 小草看视频www3| 涩涩视频网站在线观看 | 久精品视频免费观看2 | 国产乱子伦视频在线播放 | 日本精品一区二区三区四区的功能 | 国产精品九九久久久久久久 | 国产九精品国产动漫人物 | 久久电影中文字幕视频 | 欧美成三级 | 久久激情免费视频 | 欧美性猛交AAA片免费观看 | 国产精品俺来也在线观看 | 中文日韩 | 成年人一区二区三区 | 亚洲精品9999 | 日韩三级精品 | 亚欧日韩欧美网站在线看 | 色老头俺来也俺去啦最新网新 | 按摩师高h荡肉呻吟在线观看 | 奇米伊人 | 91成人黄色 | 亚洲成在人网站无码天堂 | 97人伦色伦成人免费视频 | 国产成人a区在线观看视频 狠狠的操 | 久久精品99国产精品酒店日本 | 日本无码全黄二区三区大片免费看 | 欧美精品一区二区免费视频 | 香蕉国产在线观看 |