Android 启动闪屏

    xiaoxiao2021-12-01  50

    起因

    今天逛博客逛着逛着发现了这样一篇博文: Android性能优化典范(六),发现LogCat里面有一个可以看见App启动时间的Log输出: 于是我将过滤条件调成Displayed 发现自己做的app的启动时长总是在2分半到三秒钟不等,而其他App都能在1秒之内快速响应。为什么会这么慢呢? 我查看了一下LoadActivity和 MainApplication发现MainApplication里有很多的初始化代码并且公司要求在App启动时要访问服务获取有无更新信息。这就导致了启动时间很长的情况出现。 并且发现一个现象: 在启动QQ、微信等应用的时候很快就能进入导航页面,在我应用启动的时候白屏1-2秒过后我的启动页面显示了不到0.5秒的时间就跳转了!我琢磨着之前这个白屏时间是不是 MainApplication里的代码跑的太长时间了?于是我将MainApplication里的初始化移到了我的LoadActivity里,运行程序,还是一样!Why? 不是应该先显示界面再运行初始化操作么?于是我将初始化的代码又移到了LoadActivity生命周期的onStart和onResume两个方法里,还是一样。这就很尴尬了! 带着这个疑问,查找度娘给了我答案: 白屏是要等你的启动Activity跑完onCreate和onResume才会显示界面

    解决

    之前博文提到了: 对于启动闪屏,正确的使用方法是自定义一张图片,把这张图片通过设置主题的方式显示为启动闪屏,代码执行到主页面的onCreate的时候设置为程序正常的主题。 只给了两张图,并看不懂什么意思。于是翻到了这样一篇博文http://blog.csdn.net/zivensonice/article/details/51691136 跟我遇到的问题一毛一样...

    解决方法:

    先在资源文件drawable文件夹下创建一个background_splash,xml并编写如下代码: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@android:color/holo_blue_light"> </item> <item> <bitmap android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/load_bg" /> </item> </layer-list> 这里是给他背景设置成蓝色,然后外加一张图片,这张图片可以拿你启动页的图片过来用 然后写一个自己的启动闪屏主体 <!-- 启动闪屏主题 --> <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowBackground">@drawable/background_splash</item> </style> 最后给你的启动页加上这个主体即可 <activity android:name="com.tyh.LoadActivity" android:theme="@style/SplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 你甚至是可以不需要setContentView都可以! 这样一来,避免了用户等待2秒多白屏的问题.. 这个优化还是很有必要的 参考博客:http://blog.csdn.net/zxm317122667/article/details/51000728
    转载请注明原文地址: https://ju.6miu.com/read-679429.html

    最新回复(0)