国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

你所不知道的Andorid啟動(dòng)頁(yè)(歡迎界面)

2019-11-09 18:19:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

序言:今天老大讓我去找UI要一張啟動(dòng)頁(yè)的圖,然后給項(xiàng)目加個(gè)啟動(dòng)頁(yè),放進(jìn)去之后也沒(méi)管那么多,后來(lái)運(yùn)行項(xiàng)目的時(shí)候發(fā)現(xiàn)有點(diǎn)瑕疵,來(lái)看下圖:

可能有人要問(wèn)了,這不是挺好的一個(gè)歡迎界面嗎?有啥問(wèn)題,我相信看的仔細(xì)的看官會(huì)發(fā)現(xiàn)啟動(dòng)之后有一段時(shí)間是空白的,即使是很短,讓人看著也不舒服,這時(shí)候可能又有人說(shuō)了,那可能是你在application里面干了耗時(shí)的事才導(dǎo)致的,話說(shuō)我一開始也是這樣覺(jué)得的,然后我令寫一個(gè)demo作測(cè)試,發(fā)現(xiàn)然而并不關(guān)你的application什么事兒,因?yàn)槲叶紱](méi)有application,啟動(dòng)的時(shí)候依然有這樣的問(wèn)題,然后我就去對(duì)比我手機(jī)上騰訊公司和其他公司的產(chǎn)品,我發(fā)現(xiàn)他們的app大多是在你手指按下桌面圖標(biāo)的時(shí)候,先“靜止”一段時(shí)間,然后再啟動(dòng),而且中間一點(diǎn)白色的間隙也沒(méi)有,這是什么鬼,帶著疑惑,我去百度了一番,發(fā)現(xiàn)問(wèn)題還真有:

后來(lái)我才之后,原來(lái)有冷熱啟動(dòng)這一說(shuō):

1、冷啟動(dòng):當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)沒(méi)有該應(yīng)用的進(jìn)程,這時(shí)系統(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給該應(yīng)用,這個(gè)啟動(dòng)方式就是冷啟動(dòng)。

特點(diǎn):冷啟動(dòng)因?yàn)橄到y(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給它,所以會(huì)先創(chuàng)建和初始化application類,再創(chuàng)建和初始化MainActivity類(包括一系列的測(cè)量、布局、繪制),最后顯示在界面上。

2、熱啟動(dòng):當(dāng)啟動(dòng)應(yīng)用時(shí),后臺(tái)已有該應(yīng)用的進(jìn)程(例:按back鍵、home鍵,應(yīng)用雖然會(huì)退出,但是該應(yīng)用的進(jìn)程是依然會(huì)保留在后臺(tái),可進(jìn)入任務(wù)列表查看),所以在已有進(jìn)程的情況下,這種啟動(dòng)會(huì)從已有的進(jìn)程中來(lái)啟動(dòng)應(yīng)用,這個(gè)方式叫熱啟動(dòng)。

特點(diǎn):熱啟動(dòng)因?yàn)闀?huì)從已有的進(jìn)程中來(lái)啟動(dòng),所以熱啟動(dòng)就不會(huì)走application這步了,而是直接走MainActivity(包括一系列的測(cè)量、布局、繪制),所以熱啟動(dòng)的過(guò)程只需要?jiǎng)?chuàng)建和初始化一個(gè)MainActivity就行了,而不必創(chuàng)建和初始化application,因?yàn)橐粋€(gè)應(yīng)用從新進(jìn)程的創(chuàng)建到進(jìn)程的銷毀,application只會(huì)初始化一次。

既然上述問(wèn)題不是出在application,那么肯定就是在Activity了,我是這么想的,然后我就想著是不是SetContentView的時(shí)候花了很多時(shí)間呢?然后我又測(cè)試了一遍:

@OverridePRotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); long startTime = System.currentTimeMillis(); setContentView(R.layout.activity_start); Log.d(TAG, "time===" + (System.currentTimeMillis() - startTime));}

然后打印出來(lái)的時(shí)間是:

哈,果真是setContentView導(dǎo)致的,那就很好解決了,我們不要setContentView就好了,可能還有人要問(wèn)了,你不要setContentView你咋加載布局呢?別急,別忘了還有theme這個(gè)好東西啊!我們可以定義一個(gè)theme,然后給theme設(shè)置背景就好了:

<style name="StartTheme" parent="Aipmap/icon_splash</item></style>

好了,大功告成,我們來(lái)看看效果:

注:setContentView的內(nèi)部原理有興趣的同學(xué)可以自己去百度看看,看看在哪里耗時(shí)了

這是我建的一個(gè)android小白的群,各位有興趣的小白歡迎加群共同學(xué)習(xí),也歡迎各位大神進(jìn)群指導(dǎo),共勉。群號(hào):541144061


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙江县| 登封市| 怀集县| 苏尼特左旗| 方城县| 晋中市| 津南区| 嘉荫县| 万源市| 巴青县| 中宁县| 克什克腾旗| 轮台县| 准格尔旗| 武强县| 钦州市| 定兴县| 岐山县| 门源| 兴文县| 百色市| 吴旗县| 安西县| 高阳县| 台南县| 库伦旗| 克什克腾旗| 龙山县| 舞钢市| 馆陶县| 武陟县| 玛纳斯县| 岐山县| 凤阳县| 米泉市| 景德镇市| 东明县| 东明县| 阳新县| 赤水市| 简阳市|