美文网首页
Android冷启动优化

Android冷启动优化

作者: 天地玄黄 | 来源:发表于2019-07-12 10:28 被阅读0次

    一 什么是冷启动

    只要APP的状态是未打开状态(包括不在后台),此时点击桌面图标启动应用的过程就是冷启动。

    二 冷启动的表现形式

    点击图标后出现了短暂的白屏,然后才显示了主页面的内容,虽然时间很短,但是很影响体验。

    三 解决方法

    1. 减少冷启动的时间
      这个问题等同于如何减少应用初始化的时间,从上面的APP启动流程中,如果我们在应用初始化的操作越多,那么从初始化到绘制的时间越长,用户看到真实界面的时间也就越长,可以从如下几个方面进行:

      1.1 减少在 Application 中的耗时操作(懒加载)
      1.2 减少在 onCreate 的耗时操作

    2. 适配冷启动
      2.1 纯色背景 + 启动图标,简单的来说就是用 layer-list 绘制一个纯色的背景加上一个启动图标,layer-list 代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:drawable="@color/colorPrimary" />
    
        <item>
            <bitmap
                android:gravity="center"
                android:src="@mipmap/ic_launcher" />
        </item>
    
    </layer-list>
    

    然后我们为SplashActivity创建一个主题:

    <resources>
        <!-- 基本主题 -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
        <!--纯色加启动图标的方案-->
        <style name="SplashThemeLayer" parent="AppTheme">
            <item name="windowActionBar">false</item>
            <item name="windowNoTitle">true</item>
            <item name="android:windowBackground">@drawable/bg_splash_layer_list</item>
        </style>
    </resources>
    

    最后为 SplashActivity设置主题为 SplashThemeLayer 在启动看看效果吧。

    2.2 使用背景图片
    前面的第一种方式是使用纯色背景 + 启动图标,这种方式肯定是不满足我们的产品经理的,他们要的是 个性化 的页面。
    使用背景图片也是很简单的,只需要在theme里面将我们之前的drawable替换成我们的图片即可,需要注意的是:Splash页面的背景颜色需要设置为透明 #00000000,不要设置其他背景,否则会导致图片的伸缩变形。

    总结:除了以上两种方案还可以做更复杂的动画形式的启动,那个难度要更高一些。具体使用什么方案,还需要依据自己的情况而定。

    相关文章

      网友评论

          本文标题:Android冷启动优化

          本文链接:https://www.haomeiwen.com/subject/khbskctx.html