手记

Android Study 之冷启动优化

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

结束

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

原文链接:http://www.apkbus.com/blog-904057-68047.html

0人推荐
随时随地看视频
慕课网APP