先看下最后的调用,和手指点图标的调用大概一样
at com.example.MainActivity.onCreate(MainActivity.java:15)
at android.app.Activity.performCreate(Activity.java:6666)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6251)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
以下是需要创建新进程的完整调用
Activity.startActivity()
Instrumentation.execStartActivity
ActivityManagerProxy.startActivity
Ams.startActivity startActivityAsUser
ActivityStackSupervisor.startActivityLocked
ActivityStackSupervisor.startActivityUncheckedLocked
ActivityStackSupervisor.resumeTopActivityLocked
ActivityStackSupervisor.resumeTopActivityInnerLocked
ActivityStackSupervisor.startSpecificActivityLocked
ams.startProcessLocked
Process.start Process.startViaZygote Process.openZygoteSocketIfNeeded
ZygoteState.connect//到此为止,该进入zygoteInit.main
ZygoteInit.main 相关的ZygoteInit.register
ZygoteSocket.runSelectLoop
ZygoteConnection.runOnce
ZygoteConnection.handleChildProc
RuntimeInit.zygoteInit
RuntimeInit.applicationInit
RuntimeInit.invokeStaticMain//通过反射获取ActivityThread类的main方法参数,然后抛出MethodAndArgsCaller//异常被此前的ZygoteInit.Main捕获
MethodAndArgsCaller.run
ActivityThread.main