Android App冷启动 白屏/黑屏问题
KriHooton
8年前
<p>从桌面 launcher 的小图标冷启动 App 时会经常碰到白屏/黑屏的问题,大约几百毫秒,然后才会跳转到我们应用程序的第一个 Activity, 为什么会出现这种情况?</p> <h2>为什么会出现这种情况</h2> <p>当从桌面 Launcher 的小图标点击冷启动一个 App 的时候,程序需要进行一些基本的初始化操作,如果不用一个 Preview Window 先加载出来,用户可能就会觉得自己没有点到 Launcher 上面的那个小图标,所以系统会根据你 App 的主题来设置这个 Preview Window ,也就是白屏或者黑屏,如果你的主题是 Light 则是白屏,Dark 则是黑屏。</p> <h2>解决方案:</h2> <h3>不显示这个 Preview Window</h3> <p>既然是叫 Preview Window,那么肯定有一个开关来关闭这个 Window, 搜了一圈发现这个属性叫 windowDisablePreview ,所以可以在主题中加入如下属性来避免白屏/黑屏。</p> <pre> <code class="language-java"><item name="android:windowDisablePreview">true</item> </code></pre> <p>但是这种方法有个小缺点,就是点击后短暂的那几百毫秒没有反应,就好像“假死”了一样,过了一会儿才跳出我们应用程序的第一个Activity,如果你不想让你的 App 有这个短暂“假死”时间,那么可以考虑用第二种解决方案。</p> <h3>用 windowBackground 来代替</h3> <p>大多数应用程序启动的第一个页面都是自家品牌的 logo,所以可以通过设置 windowBackground 这个属性来解决,如下:</p> <pre> <code class="language-java"><item name="android:windowBackground">@drawable/your_logo_page</item> <item name="android:windowFullscreen">true</item> <item name="android:windowNoTitle">true</item> </code></pre> <p>用这种方式启动后哦,Preview Window 的 windowBackground 就是我们 App 的 logo,所以一般也推荐这种方式。</p> <p> </p> <p>来自:http://huxian99.github.io/2016/12/08/ciwgbt28l00009kxk2d70evae/</p> <p> </p>