Android控件系统(四)——浅析Activity启动过程


Android版本:7.0(API27)bash


  本篇文章的目的是为了从Activity的启动分析出各种事件的开始入口,例如PhoneWindow的建立、绘制流程、触摸事件分发、按键事件分发。这些内容后续文章我会一一分析,因此你们简单理解Activity的启动过程便可。
  Activity的启动咱们从startActivity提及,下图是启动过程的函数调用路径:函数

Activity.startActivity()->
    startActivityForResult()->
Instrumentation.execStartActivity()->
ActivityManagerService.startActivity()->
    startActivityAsUser()->
ActivityStarter.startActivityMayWait()->
    startActivityLocked()->
        startActivity()->
            startActivity()->
                startActivityUnchecked()->
ActivityStackSupervisor.resumeFocusedStackTopActivityLocked()->
ActivityStack.resumeTopActivityUncheckedLocked()->
    resumeTopActivityInnerLocked()->
ActivityStackSupervisor.startSpecificActivityLocked()->
    realStartActivityLocked()->
ActivityThread.ApplicationThread.scheduleLaunchActivity()->
ActivityThread.handleLaunchActivity()->
    performLaunchActivity()
    handleResumeActivity()
复制代码

  最后Activity的启动过程由ActivityThread的handleLaunchActivity来完成,handleLaunchActivity中关键源码以下:spa

private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent, String reason){
    ....
    Activity a = performLaunchActivity(r, customIntent);
    ....
    handleResumeActivity(r.token, false, r.isForward,
                    !r.activity.mFinished && !r.startsNotResumed, r.lastProcessedSeq, reason);
}
复制代码
  • 从上面的代码咱们能够看到performLaunchActivity返回了一个Activity ,从这一点咱们能够猜想方法中会完成PhoneWindow的建立、Activity窗口的建立,以及Activity生命周期onCreate、onStart回调;
  • handleResumeActivity完成Activity窗口的显示,以及Activity生命周期onResume的回调;

performLaunchActivity和handleResumeActivity才是咱们后续分析须要重点关注的方法。code

相关文章
相关标签/搜索