啟動時,AMS首先顯示Starting Window(如果設(shè)置窗口透明則不會顯示,即windowIsTranslucent屬性值為true時贿堰,或者設(shè)置windowIsFloating或windowDisablePreview為true也不會顯示)辙芍;Starting Window的window type 為 WindowManager.LayoutParams#TYPE_APPLICATION_STARTING(3),而目標(biāo)Activity的窗口type為WindowManager.LayoutParams#TYPE_APPLICATION(2)羹与,因此Starting Window將顯示在應(yīng)用程序窗口上面故硅。當(dāng)onResume執(zhí)行之后,目標(biāo)Activity的應(yīng)用程序窗口添加到WMS中纵搁,在完成第一次渲染之后吃衅,WMS移除對應(yīng)的Starting Window,此時應(yīng)用程序窗口正常顯示腾誉。
StartingWindow的樣式根據(jù)主題不同而不同徘层,如果不顯示設(shè)置,可能為黑屏(dark theme)或者白屏(light theme)利职∪ばВ可以修改應(yīng)用的Theme主題,將android:windowBackground屬性值設(shè)置為應(yīng)用的logo猪贪,以避免使用默認(rèn)值時在應(yīng)用啟動過程中顯示為白屏或黑屏跷敬,同時這樣也能在視覺效果上加速應(yīng)用程序的啟動過程,提高用戶體驗热押。**
Starting Window 只在需要導(dǎo)航到新建NewTask或者目標(biāo)Activity的進(jìn)程不存在西傀,需要重新啟動的情況下顯示。如應(yīng)用內(nèi)的普通跳轉(zhuǎn)不會顯示過渡窗口桶癣。