Android APP启动时出现白屏或者黑屏怎么办?

news/2024/12/22 23:05:05/

很多时候,我们启动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>


作者:sendtion
链接:http://www.jianshu.com/p/09b876b865ac
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

http://www.ppmy.cn/news/563676.html

相关文章

android启动白屏的解决

1将启动页面设置style <!--闪屏页--><style name"SplashTheme" parent"Theme.AppCompat.Light.NoActionBar"><item name"android:windowBackground">drawable/bg_splash_theme_leader</item><item name"android…

uniapp 手机模拟测试app白屏问题

问题描述 同样一套代码在运行到浏览器中没有问题&#xff0c;当运行到手机或模拟器中的时候出现了白屏的现象 控制台显示到 应用【xxx xxx】已启动 . . . 就没了下文 解决问题 一开始以为是 adb.exe 路径设置的问题&#xff1b; 于是将设置Settings.json中的adb路径填写…

微信小程序上传后 进行性手机扫码阅览 发现白屏的解决

目录 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决1.上传时没有勾选保护2.请求的域名没有配置 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决 1.上传时没有勾选保护 1.打开微信的开发工具 2.在上传之前 3.点击详情 --->本地设置 4.勾选上传时进…

WKWebView 白屏问题

1、WKWebView 自诩拥有更快的加载速度&#xff0c;更低的内存占用&#xff0c;但实际上 WKWebView 是一个多进程组件&#xff0c;Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候&#xff0c;我们也惊讶于打开 WKWebView 后&#xff0c;App 进…

关于安卓手机微信访问https链接白屏的问题

之前部署IIS服务器,安装证书后用浏览器访问链接&#xff0c;显示正常 然后很开心的以为部署很成功&#xff0c;又拿了苹果手机微信访问了一下 也是显示成功&#xff0c;然后拿安卓手机的微信访问就显示白屏&#xff0c;什么都没有。然后我就很是诧异&#xff0c;又用安卓手机的…

苹果手机内存不够白屏

目录 保留数据刷机教程 1、下载爱思助手&#xff0c;下面那个&#xff08;绝对不是打广告&#xff09; 2、让手机进入”恢复“模式连上电脑 ​3、下载固件 4、保留数据刷机 其他一些说明 内存不够已经快一年了&#xff0c;这一年一直靠各种删来维持&#xff0c;之前出现过…

Android基础篇 APP启动出现白屏问题

一、问题描述 当打开一个Activity时&#xff0c;如果这个Activity所属的应用还没有在运行&#xff0c;系统会为这个Activity所属的应用创建一个进程&#xff08;冷启动&#xff09;&#xff0c;但进程的创建与初始化都需要时间&#xff0c;在这个动作完成之前系统要做什么呢&a…

Android-彻底解决启动白屏、跳转页面白屏!

背景&#xff1a;项目在启动页面老是有一瞬间白屏&#xff0c;还有切换日夜间模式时finish栈内所有Activity再启动MainActivity时会白屏。 1. 初步解决办法: 设置窗口的背景色为启动页。 虽然看不到白屏了&#xff0c;但还是有点丑&#xff0c;怪怪的… <style name"…