Android 启动页白屏与黑屏
Posted 亮亮在江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 启动页白屏与黑屏相关的知识,希望对你有一定的参考价值。
最近项目中加入了启动页与广告页,发现了一些共性的问题,在此记录一下希望能对有需要的同学帮助。问题就是点击app图标启动时第一眼看到会有白屏或者黑屏的现象,然后点击广告页跳过也会有白屏或者卡顿问题。
接下来看一下APP冷启动流程:
整个流程可以概括如下:
1. 点击桌面应用图标,Launcher进程将启动Activity(MainActivity)的请求以Binder的方式发送给了AMS。
2. AMS接收到启动请求后,交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack
处理Activity进栈相关流程。同时以Socket方式请求Zygote进程fork新进程。
3. Zygote接收到新进程创建请求后fork出一个新进程(App主进程)给应用。并在主进程中创建ActivityThread对象和开启Looper消息循环,开始处理创建Activity。
4. 在创建Activity之前,如果自定义了Application类,会创建和初始化Application类。
5. ActivityThread利用ClassLoader去加载Activity、创建Activity实例,并回调Activity的onCreate()方法。这样便完成了Activity的启动。
那么如何解决白屏或者黑屏?
可以给启动页设置theme主题,可以设置成纯颜色(设置一个和Activity UI相似的背景),也可以设置成要加载的图片
<activity
android:name=".userlogin.ui.activity.SplashActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppThemeNoAction.StartingWindowTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 应用启动页(StartingWindow)的theme -->
<style name="AppThemeNoAction.StartingWindowTheme">
<!-- 可以设置成纯颜色(设置一个和Activity UI相似的背景) -->
<item name="android:windowBackground">@drawable/preview</item>
</style>
其中的 windowBackground 设置,可以设置为 *.xml 文件 也可以直接设置为 图片。
设置图片,图片固定,设置xml文件可以实现复杂效果。
在res/drawable下新建一个layer-list,比如bg_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<!-- 图片 -->
<bitmap
android:gravity="center"
android:src="@drawable/preview" />
</item>
</layer-list>
另外点击广告页跳过按钮到主页面时也会有白屏效果,此时可以设置
设置android:windowDisablePreview属性,禁用窗口的预览动画, 在MainActivity显示之前,系统永远不会使用窗口的主题来显示它的预览
<!-- 普通Activity(StartingWindow)的theme -->
<style name="AppThemeNoAction.ActivityStartingWindowTheme">
<item name="android:windowDisablePreview">true</item>
</style>
以上内容很好的解决了启动页和广告页白屏黑屏问题,希望对大家有帮助!
以上是关于Android 启动页白屏与黑屏的主要内容,如果未能解决你的问题,请参考以下文章