Android Study 之冷启动优化(解决启动短暂白屏or黑屏)

LZ-Says:话说真正负责项目后才发现,想要软件越来越好,就要从细节抓问题,去解决问题,这样我们的软件才会越来越好~

前言

今天下班路上闲的无聊随便点了几个app,包括正在负责的几个项目,突然发现怎么人家的启动时不会出现短暂白屏,而我自己负责的却会有短暂的白屏,瞬间感觉好不爽。先给大家瞅瞅效果吧。

这里写图片描述

时间虽然短暂,但是确实可以看到短暂的白屏现象,那么让我们一起去找找解决方案吧~

问度娘~

通过度娘搜索,我们可以得知,APP启动有俩种方式,分别为冷启动热启动,头一次知道还区分这个,赶紧看看这俩个分别都是什么含义吧~

1.冷启动:
当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。
PS:在本项目中,启动大致流程为,首先实例化Application,然后实例化入口Activity,最后显示Activity

2.热启动:
当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。
PS:由于在后台中存在当前的进程,So,直接从进程中启动,不需要重新创建Application,只需要实例化入口Activity即可。

简单分析

那么看到这里,也许有些同志知道该从何处入手,但是可能有的人也许就该问了,那么app启动方式和我们今天这个有什么关系呢?(LZ就属于第二种人,没辙啊~)

继续通过搜索,得知app在启动的时候会做一些操作,当然了,也可以理解为初始化相关内容,包括初始化我们的Application类,那么说到这里,免不了老生常谈的话语,尽量不要做耗时操作,如必须要做,做好加异步处理。所以说是这些东西导致我们app出现短暂的白屏。那么,简单了解之后,让我们一起开始动手解决吧~

解决问题~

网上看到大家一般都是使用以下俩个方式去优化这个问题,具体如下:

  1. 设置要启动的Activity主题为透明,可以给用户造成一个视觉上的假象;
  2. 为要启动的Activity设置主题为一张背景图;
    。。。 。。。

原理都差不多,都是设置相关主题,那我们直接按照第一种方式简单有效实现吧~

在Style中设置透明
<style name="AppTransparentTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>
启动的Activity中主题设置为以上Style
<activity
            android:name=".MainActivity"
            android:theme="@style/AppTransparentTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
最直接查看效果

这里写图片描述

结束

好了,到此为止,简单介绍到这里~感谢大家观看~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HLQ_Struggle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值