四字成语一肖中特:解決 APP啟動白屏黑屏問題 [復制鏈接]

2019-5-23 17:59
sydMobile 閱讀:323 評論:0 贊:0
Tag:  Android

閃屏頁簡介

致富之地一肖中特 www.qcfmo.icu 閃屏頁,我們手機上的每個 APP 幾乎都有自己的閃屏頁,就是在真正進入程序前,會有一個頁面停頓幾秒鐘。其實我們完全可以充分利用好這幾秒鐘做很多的程序初始化了啟動。
圖片描述

為什么我的 APP 啟動會白屏或者黑屏

有時候我們會發現,我們在啟動我們自己的 APP 的時候,總是有那么點時間是白屏(黑屏),經過了白屏(黑屏)后才會進入我們的 APP。那么這是為什么呢?

模擬效果

下面我們模擬一下白屏的效果
20190522-splash開啟.gif

可以看到打開 APP 的時候會有白屏的現象出現,當然我的這個演示 APP 程序沒有那么復雜,因此我為了實現這種效果,就在 Application 中做了個睡眠。

    @Override
    public void onCreate() {
        super.onCreate();
        myApplication = this;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

這樣就是出現了這種白屏的效果,由此可以得出結論,如果程序很復雜,并且有很多的初始化放到了 Application 中去完成了,那么這個時候剛打開程序的時候就會有個耗時,就會出現白屏的效果。

所以這里程序加載有個順序,當打開一個 Activity 的時候,并且這個 Activity 所屬的 Application 還沒有運行,系統會首先為這個 Activity 創建一個進程,創建進程的時候就會調用 Application 的 onCreate 方法。進程的創建和 onCreate 內部的初始化是需要時間的,如果這個時候過長,沒有任何反應的話,那么對于用戶來說是不不知道的,用戶還以為自己沒有點到呢,所以很顯然是不可能在原頁面等待加載的,那么這個時候就有了 StartingWindow(PerviewWindow)的出現,StartingWindow 出現在應用程序進程創建并且初始化完成之前,是個臨時的窗口,對應的 WindowTypeTYPE_APPLICATION_STARTING 作用就是告訴用戶,系統已經收到我們的操作了,正在對程序進行初始化,只要初始化完畢后就會移除這個窗口。

所以其實我們看到的白屏或者黑屏就是 StartingWindow,那么為什么是白色或者黑色呢?我們一般都會給我們的 Application 和 Activity 設置 Theme,系統就會根據我們所設置的 Theme 來決定 StartingWindow 的顏色。我們都知道 Window 布局的頂層是 DecorView,而 StaringWindow 顯示的是一個空的 DecorView,只是這個 DecorView 會應用我們的這個 Activity 所指定的 Theme。我們默認的 Theme 是 @android:style/Theme.Light 的話,這個時候就會產生白屏了。黑屏就是應用了 @android:style/Theme.Black,好了到這里我們就徹底明白為什么會出現白屏或者黑屏了。再順便說一下 Activity 布局的繪制順序:

  1. 繪制背景

  2. 繪制 View 本身的內容

  3. 繪制子 View

  4. 繪制修飾內容(例如滾動條)

解決黑白屏問題

通過上面我們已經知道為什么會出現這個問題了,那么解決起來就很簡單了,只需要給啟動頁的樣式添加一個背景就可以了,這樣就達到了秒開的效果了!

<style name = "SplashThem" parent = "AppTheme">
    <item name = "android:windowBackground">@drawble/splash</item>
  <item name = "android:windwoFullscreen">true</item>
</style>
設置的這個背景要和我的啟動頁搭配起來就行了!

圖片描述

參考:https://blog.csdn.net/yanzhenjie1003/article/details/52201896


我來說兩句
您需要登錄后才可以評論 登錄 | 立即注冊
facelist
所有評論(0)
領先的中文移動開發者社區
18620764416
7*24全天服務
意見反?。[email protected]

掃一掃關注我們

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 致富之地一肖中特 )

黑龙江时时组选图表 后一7码怎么倍投 二人麻将规则讲解 北京pk10有赚钱的人 大乐透篮球数字几到几 pk10稳赚技巧数据多高 资金盘提现变高 重庆时时单双大小 怎么买排列三赚钱 2019时时彩20分钟开奖 玩彩怎么倍投最科学 赛车pk10官网开奖记录 黑马人工计划软件安装 河北时时开奖视频 拼搏在线彩票网彩神通看不了 新疆时时计划平台