Android APP啟動時出現白屏或者黑屏怎么辦?

很多時候,我們啟動APP時會有短暫的白屏或者黑屏,大概1~2秒后,才會顯示主界面或者顯示啟動頁,這是為什么呢?本篇文章來介紹一下,并給出APP啟動秒開的解決辦法。

1、為什么APP啟動時會出現白屏或者黑屏?

當打開一個Activity時,如果這個Activity所屬的應用還沒有在運行,系統會為這個Activity所屬的應用創建一個進程,但進程的創建與初始化都需要時間,在這個動作完成之前系統要做什么呢?如果沒有任何反應的話,如果程序初始化的時間很長,用戶可能還以為沒有點到相應的位置。但此時所啟動的程序還沒初始化完,既無法顯示程序,又不能停在原處不做任何動作,怎么辦?這就有了Starting Window的概念,也可以稱之為Preview Window。

Starting Window就是一個用于在應用程序進程創建并初始化成功前顯示的臨時窗口,擁有的Window Type是TYPE_APPLICATION_STARTING。在程序初始化完成前顯示這個窗口,以告知用戶系統已經知道了他要打開這個應用并做出了響應,當程序初始化完成后顯示用戶UI并移除這個窗口。

顯示白屏或者黑屏,是由你的啟動Activity或者Application來決定的。如果你使用的是Light主題,那么就可能出現白屏;如果你使用的是Black主題,那么就可能出現黑屏。當你設置Light或者Black主題時,Starting Window顯示的就是你啟動Activity的android:windowBackground屬性,所以才會出現白屏或者黑屏的情況。

2、怎么解決啟動白屏或者黑屏問題呢?

在style.xml文件中為啟動的Activity設置主題,設置android:windowBackground屬性為啟動Activity顯示的閃屏圖片,這樣才有APP秒開的效果。設置android:windowFullscreen屬性為true,使閃屏圖片全屏顯示。設置windowNoTitle屬性為true,隱藏Activity的ActionBar顯示。

<!-- 防止歡迎頁白屏或者黑屏,設置圖片 -->
<style name="SplashTheme" parent="AppBaseTheme"> 
    <item name="android:windowBackground">@drawable/img_welcome</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="windowNoTitle">true</item> 
    <!--<item name="android:windowIsTranslucent">false</item>--> 
    <!--<item name="android:windowDisablePreview">true</item>-->
</style>

然后,在清單文件AndroidManifest.xml中,為啟動的Activity設置主題SplashTheme。

<activity android:name=".ui.WelcomeActivity" 
    android:theme="@style/SplashTheme"> 
    <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter>
</activity>

此外,如果設置android:windowIsTranslucent屬性,表明該窗口是半透明的,這樣也不會出現白屏或者黑屏。但是,它和MainActivity的顯示是同步,如果在MainActivity啟動的時候,有過多復雜的操作,就會出現在手機中點擊了應用程序的圖標之后,但過兩秒才會打開應用程序不好的卡頓體驗效果。

如果設置android:windowDisablePreview屬性,禁用窗口的預覽動畫, 在MainActivity顯示之前,系統永遠不會使用窗口的主題來顯示它的預覽,這也保證了不會出現白屏或者黑屏。但是,與設置android:windowIsTranslucent屬性一樣,如果在MainActivity啟動的時候,有過多復雜的操作,就會出現在手機中點擊了應用程序的圖標,但過兩秒才會打開應用程序不好的卡頓體驗效果。

3、還有沒有其他解決方案?

以上方式可以實現APP秒開,但是我不想顯示一張圖片,那么你也可以顯示純顏色,或者純顏色加小圖標。

Starting Window顯示純顏色,直接設置android:windowBackground屬性為顏色代碼:

<item name="android:windowBackground">@color/colorAccent</item>

Starting Window顯示純顏色加圖標,需要在Drawable中定義一個splash.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- 背景顏色 --> 
    <item android:drawable="@color/green" /> <item> 
    <!-- 圖片 --> 
    <bitmap android:gravity="center" android:src="@drawable/icon_welcome" /> </item>
</layer-list>
<!-- 防止歡迎頁白屏或者黑屏,設置圖片 -->
<style name="SplashTheme" parent="AppBaseTheme"> 
    <item name="android:windowBackground">@drawable/splash</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="windowNoTitle">true</item>
</style>

原文地址:http://sendtion.cn/archives/506
如有疑問,歡迎指正!

參考文章:
http://www.cnblogs.com/angeldevil/p/3801209.html
http://blog.csdn.net/yanzhenjie1003/article/details/52201896
http://blog.csdn.net/wangjiang_qianmo/article/details/51736418

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,367評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,001評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,213評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,535評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,317評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,868評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,963評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,090評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,599評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,549評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,712評論 1 367
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,233評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,353評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,607評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,321評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,686評論 2 370

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,579評論 25 707
  • 在網上搜索了許多關于app啟動白屏的文章大致分為兩類 第一種是在style的app的theme 里設置 true ...
    licue閱讀 5,731評論 0 0
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,477評論 0 17
  • 轉自上谷門侯凱東師傅博客青磚茶-以茶會友千里聚茶情2013年3月雷松濤先生(赤壁市質監局黨組書記、局長)及呂先生千...
    f6f3937ad890閱讀 379評論 0 1
  • 第十二章科學的利用可得性啟發法可得性啟發法:通過“實例呈現在腦中輕松程度”來判斷概率的過程。【意識自己偏見有利于團...
    我叫黃小賤閱讀 401評論 0 0