Activity的启动流程

来源:互联网 发布:成都企业网络推广 编辑:程序博客网 时间:2024/05/14 04:21
    当我们调用startActivity(intent)的时候,内部走的是startActivityforResult(参数)。startActivityForResult(intent, -1, options);-1表示requestCode为-1.不用返回结果。该方法内部重点是
  1. Instrumentation.ActivityResult ar =  
  2.             mInstrumentation.execStartActivity(  
  3.                 this, mMainThread.getApplicationThread(), mToken, this,  
  4.                 intent, requestCode, options);  
  5. 真正打开activity的实现在Instrumentation的execStartActivity方法。execStartActivity有几个重载的函数。真正实现它的是里面的
  6. IApplicationThread whoThread = (IApplicationThread) contextThread; 
    1. int result = ActivityManagerNative.getDefault()  
    2.             .startActivity(whoThread, who.getBasePackageName(), intent,  
    3.                     intent.resolveTypeIfNeeded(who.getContentResolver()),  
    4.                     token, target != null ? target.mEmbeddedID : null,  
    5.                     requestCode, 0nullnull, options);  
    6.         //这个方法是专门抛异常的,它会对结果进行检查,如果无法打开activity,  
    7.         //则抛出诸如ActivityNotFoundException类似的各种异常  
    8.         checkStartActivityResult(result, intent);  
    9. 标红的是重点。IApplicationThread 是由ActivityThread实现的。

原创粉丝点击