zoukankan      html  css  js  c++  java
  • Android应用程序启动过程(一)总结

    一.App启动方式

    1,冷启动

    冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用。

    冷启动的特点:因为系统会重新创建一个新的进程分配给它,所以会创建和初始化Application,在创建和初始化它的Launch Activity(onCreate onMesure onLayout,ondraw),最后展示在界面上

    2.热启动
    热启动:当启动应用时,后台存在该应用的进程(back键,home键,应用退出,但是没有销毁),从已有的进程中启动

    热启动的特点:从已有的进程中启动,不需要创建和初始化Application ,直接创建和初始化它的Launch Activity

    两者区别:后台进程是否存在相应的进程,创建进程是耗时操作

    二.应用的启动过程

    主要讲解冷启动的情况(分配进程->创建和初始化Application->创建和初始化Launch Activity)

    App启动过程就是:

    一. Step1 - Step 11:
    Launcher通过Binder进程间通信机制通知ActivityManagerService,
    它要启动一个Activity;
    
    二. Step 12 - Step 16:
    ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态;
    
    三. Step 17 - Step 24:
    Launcher通过Binder进程间通信机制通知ActivityManagerService,它已经准备就绪进入Paused状态,
    于是ActivityManagerService就创建一个新的进程,用来启动一个ActivityThread实例,
    即将要启动的Activity就是在这个ActivityThread实例中运行;
    
    四. Step 25 - Step 27:
    ActivityThread通过Binder进程间通信机制将一个ApplicationThread类型的Binder对象传递给ActivityManagerService,
    以便以后ActivityManagerService能够通过这个Binder对象和它进行通信;
    
    五. Step 28 - Step 35:
    ActivityManagerService通过Binder进程间通信机制通知ActivityThread,
    现在一切准备就绪,它可以真正执行Activity的启动操作了。
    

      

  • 相关阅读:
    转载:c++内存泄露机制
    推荐一款不错的dialog小工具:artDialog
    写的一些推广方法 拿出来分享下
    struts2标签具体解释
    父亲节:再见,总有一天
    Hadoop是什么
    熊猫烟花集团完美见证异速联远程接入系统
    OpenStack Networking
    管道(Pipe)/createPipe
    百度2014校园招聘算法——给出一组数据A=[a_0, a_1, a-2, ... a_n](当中n可变),打印出该数值元素的全部组合。
  • 原文地址:https://www.cnblogs.com/ganchuanpu/p/6234744.html
Copyright © 2011-2022 走看看