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