Android启动方式简述

作者: YoungTa0 | 来源:发表于2018-05-08 11:06 被阅读96次

    前言

    我们点击Android应用图标启动应用程序的时候,有时候可以马上启动,但有时候很缓慢并进入空白页,这是为什么呢?这是因为Android的启动方式分为冷启动和热启动。

    Android启动方式

    Android启动方式有两种:冷启动,热启动

    冷启动:在安卓系统中,系统为每个运行的应用至少分配一个进程 (多进程应用申请多个进程) 。从进程角度上讲,冷启动就是在启动应用前,系统中没有该应用的人和进程信息 (包括 Activity、Service 等) 。所以,冷启动产生的场景就很容易理解了,比如设备开机后应用的第一次启动,系统杀掉应用进程 (如:系统内存吃紧引发的 kill 和 用户主动产生的 kill) 后 的再次启动等。那么自然这种方式下,应用的启动时间最长,因为相比另外两种启动方式,系统和我们的应用要做的工作最多。

    应用发生冷启动时,系统有三件任务要做:
    1.开始加载并启动应用;
    2.应用启动后,显示一个空白的启动窗口;
    3.创建应用进程信息;

    系统创建应用进程后,应用就要做下面这些事情:
    1.初始化应用中的对象 (比如 Application 中的工作);
    2.启动主线程 (UI 线程) ;
    3.创建第一个 Activity;
    4.加载内容视图 (Inflating) ;
    5.计算视图在屏幕上的位置排版 (Laying out);
    6.绘制视图 (draw)。

    热启动:当启动应用时,后台存在该应用的进程(back键,home键,应用退出,但是没有销毁),从已有的进程中启动。
    热启动的特点:从已有的进程中启动,不需要创建和初始化Application ,直接创建和初始化它的Launch Activity

    优化冷启动时间

    1.application的启动优化:Application启动会经过attachBaseContext-->onCreate;
    这两个方法不执行完是不会出现lanucher页面的,所以我们需要对attachBaseContext和onCreate进行优化。
    2.启动页优化:application优化完了以后,就会执行启动页的onCreate,我们发现oncreate一旦耗时,也会导致启动页有一瞬间的卡顿,精益求精,我们把启动页的启动逻辑延迟初始化并通知application进行初始化,然后等待application初始化完成的事件之后,继续往下走,直到进入主页; 启动页的优化逻辑比较简单,只是纯业务的上的调整。
    3.主页优化:主要优化onCreate即可。把可以放线程初始化的都放到线程里去。
    参考:https://juejin.im/entry/582adaad570c35006cdcb615

    测试应用启动时间

    1.可以通过代码打桩,计算启动时间
    2.可以通过秒表计算(肉眼观察,这个很low)
    3.通过adb命令:
    adb shell am start -W [packageName]/[packageName.launchActivity]

    相关文章

      网友评论

      本文标题:Android启动方式简述

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