最近在搞項(xiàng)目的時(shí)候發(fā)現(xiàn)咱App啟動(dòng)有點(diǎn)慢啊,特別是第一次打開,那0.5秒的白屏簡(jiǎn)直讓人抓狂。項(xiàng)目經(jīng)理有沒有注意到這個(gè)小細(xì)節(jié)?可能你沒在意,也可能已經(jīng)解決了,但冷啟動(dòng)這事兒還真不能忽視。
問題來了,還沒加載布局文件,窗口背景就已經(jīng)顯示出來了,黑屏白屏就是這么來的。布局還沒出來,窗口是白色,咋整?
這里有倆解決辦法:
1. 讓窗口透明,這樣啟動(dòng)的時(shí)候就看不到那個(gè)煩人的白屏了。
2. 給窗口加個(gè)背景圖,一進(jìn)來就能看到,白屏不就解決了嘛。
先說第一種透明的方法:把主題設(shè)置到啟動(dòng)Activity上,用`@android:color/transparent`讓背景透明。效果就是點(diǎn)開圖標(biāo)后雖然啟動(dòng)了,但是窗口透明,沒有白屏,缺點(diǎn)是啟動(dòng)速度還是不夠快,沒達(dá)到秒開的效果。
第二種偽布局的做法(主流做法):也是把主題設(shè)置到啟動(dòng)Activity上,用`@mipmap/splashbg`設(shè)置默認(rèn)圖片為splashbg。點(diǎn)擊圖標(biāo)后馬上加載窗口并顯示背景圖,瞬間啟動(dòng)的感覺就有了。(ps:這張圖是我臨時(shí)做的,別嫌棄哈)
還有一個(gè)小技巧,可以把a(bǔ)pplication中的初始化放到單獨(dú)線程里處理,方便管理的話可以用IntentService來做初始化工作。service是在主線程中運(yùn)行,而intentService是在后臺(tái)線程中跑的,在application里啟動(dòng)intentservice。或者直接用協(xié)程切換到子線程進(jìn)行初始化操作。
好了,功能實(shí)現(xiàn)完了,喜歡的話就點(diǎn)個(gè)贊吧!
問題來了,還沒加載布局文件,窗口背景就已經(jīng)顯示出來了,黑屏白屏就是這么來的。布局還沒出來,窗口是白色,咋整?
這里有倆解決辦法:
1. 讓窗口透明,這樣啟動(dòng)的時(shí)候就看不到那個(gè)煩人的白屏了。
2. 給窗口加個(gè)背景圖,一進(jìn)來就能看到,白屏不就解決了嘛。
先說第一種透明的方法:把主題設(shè)置到啟動(dòng)Activity上,用`@android:color/transparent`讓背景透明。效果就是點(diǎn)開圖標(biāo)后雖然啟動(dòng)了,但是窗口透明,沒有白屏,缺點(diǎn)是啟動(dòng)速度還是不夠快,沒達(dá)到秒開的效果。
第二種偽布局的做法(主流做法):也是把主題設(shè)置到啟動(dòng)Activity上,用`@mipmap/splashbg`設(shè)置默認(rèn)圖片為splashbg。點(diǎn)擊圖標(biāo)后馬上加載窗口并顯示背景圖,瞬間啟動(dòng)的感覺就有了。(ps:這張圖是我臨時(shí)做的,別嫌棄哈)
還有一個(gè)小技巧,可以把a(bǔ)pplication中的初始化放到單獨(dú)線程里處理,方便管理的話可以用IntentService來做初始化工作。service是在主線程中運(yùn)行,而intentService是在后臺(tái)線程中跑的,在application里啟動(dòng)intentservice。或者直接用協(xié)程切換到子線程進(jìn)行初始化操作。
好了,功能實(shí)現(xiàn)完了,喜歡的話就點(diǎn)個(gè)贊吧!