美文网首页
App启动优化

App启动优化

作者: Spl_none | 来源:发表于2019-03-19 20:57 被阅读0次

    为什么要做启动优化呢?

    当用户启动App之后会立即展示出一个空白页,这个空白时间大概为1~2秒,然后再跳转到App的正常界面,这种闪屏等待的过程,对用户的体验度是有影响的。

    启动应用分别分为以下三种

    冷启动 热启动 温启动

    • 用户点击桌面加载启动App(桌面系统(launcher)也是一个app,系统所维护属于应用程)
    • App启动之后会立即出现一个空白页(跟随主题)
    • 创建App的进程及App对象
    • 启动MainThread创建启动的Activity对象
    • 加载View,布置屏幕,开始绘制
      Google爸爸也给出了启动优化的三个方向
    • 利用提前展示出来的Window,快速展示出来一个界面,给用户快速反馈的体验;
    • 避免在启动时做密集沉重的初始化(Heavy app initialization);
    • 定位问题:避免I/O操作、反序列化、网络操作、布局嵌套等。

    解决方案

    可以提前展示出的Window,快速的展示出一个页面展现给用户

    • 在style.xml文件中创建一个StartTheme样式主题
         //APP启动优化
        <style name="StartTheme" parent="Theme.AppCompat.Light.NoActionBar">
            //引用上面start_activity_background.xml背景文件
            <item name="android:windowBackground">@drawable/start_activity_background</item>
            <item name="android:windowFullscreen">true</item> //填充整个窗口设置
        </style>
    
    
    • 在清单文件AndroidManifest.xml中替换主题样式
    android:theme="@style/StartTheme"
    

    在启动展示的Activity界面动态的替换回App的正常主题样式,一定要在super.onCreate()之前执行

    当然还有别的方法进行实现这种效果

    Application 作为 应用程序的整个初始化配置入口,时常有很多第三方组件(包括App应用本身)都在 Application 中抢占先机,完成初始化操作

    1. 子线程初始化各种第三方或者个人工具库
    2. 使用懒加载(按需所用)
    3. 不要在几大生命周期里做耗时操作(逻辑+view+图片内存)
    4. 不建议使用newThread,使用IntentService;newThread实现导致数据不完整,intentservice,不管怎么跳转我在后台执行任务,保证数据完整

    详细请参照

    相关文章

      网友评论

          本文标题:App启动优化

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