作者:小帅哥沈阳后援会果果 | 来源:互联网 | 2023-10-12 18:48
篇首语:本文由编程笔记#小编为大家整理,主要介绍了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相似的背景),也可以设置成要加载的图片
android:name=".userlogin.ui.activity.SplashActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppThemeNoAction.StartingWindowTheme">
其中的 windowBackground 设置,可以设置为 *.xml 文件 也可以直接设置为 图片。
设置图片,图片固定,设置xml文件可以实现复杂效果。
在res/drawable下新建一个layer-list,比如bg_splash.xml
android:gravity="center"
android:src="@drawable/preview" />
另外点击广告页跳过按钮到主页面时也会有白屏效果,此时可以设置
设置android:windowDisablePreview属性,禁用窗口的预览动画, 在MainActivity显示之前,系统永远不会使用窗口的主题来显示它的预览
以上内容很好的解决了启动页和广告页白屏黑屏问题,希望对大家有帮助!