Android启动优化,去除白屏或者黑屏

App启动的方式:

这里写图片描述

冷启动:指后台没有改应用的进程,重新创建进程,过程为,实例化Application,然后实例化入口Activity,最后显示Activity.

热启动:后台中存在当前的进程,直接从进程中启动,不用重新创建Application,只需要实例化入口Activity即可

优化App启动过程的三个建议:

  1. Application的创建过程中尽量少的进行耗时操作
  2. 如果用到SharePreference,尽量在异步线程中操作
  3. 减少布局的层次,并且生命周期回调的方法中尽量减少耗时的操作

第一种方法Manifest文件中给指定的入口Activity设置一个背景,当进入之后恢复默认背景,这样在显示界面之前都会显示那么被设置的背景,这样就提高了用户体验,至少等待主界面的过程中不是黑屏或者白屏.

主题的设置

<style name="LauncherTheme">
<item name="android:windowBackground">@drawable/bg_login</item>
</style>

Activity设置主题

<activity
            android:name=".activity.LauncherActivity"
            android:theme="@style/LauncherTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
但是这种方法有一个 局限性 就是有些设备不支持手机欢迎界面铺满标题栏全屏,就会有一个logo从上到下瞬间跳变的效果


所以最后运用了郭神的方案:http://blog.youkuaiyun.com/sinyu890807/article/details/51019856

修改styles.xml中主题相关的代码,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ......
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
</style>
其中我们加入了两个属性,windowIsTranslucent和windowNoTitle,将这两个属性都设置成true,就可以让程序在初始化的时候窗口是透明的,初始化结束后程序主界面才会显示出来,从而也就完全看不到白屏界面了。 使用这种方式,虽然白屏界面看不到了,但是由于初始化的过程中窗口是透明的,会让用户感觉程序启动的响应速度稍微慢了点,不过其实这种差别都是毫秒级的,就没必要再为这个担心了。

       亲测可用,如果有更好的方案,欢迎留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值