先说结论:MethodAndArgsCaller类继承自Exception类,并且实现了Runnable接口。在run方法里面,通过反射,也就是Method.invoke方法,完成ActivityThread.main()方法的调用。MethodAndArgsCaller类的对象是一个异常,被抛出后,被catch到,然后通过对象调用run方法。这样run方法,最终是在ZygoteInit的main方法里面调用的。本文源码版本Android6.0 , SDK版本23通过我的这篇文章:在线查看Android系统源码,可以快速查看在线源码。在线源码链接:/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java具体过程:从ZygoteInit的main方法开始,到调用runOnce方法:
ActivityThread的main方法在哪里被调用的?
先说结论:MethodAndArgsCaller类继承自Exception类,并且实现了Runnable接口。在run方法里面,通过反射,也就是Method.invoke方法,完成ActivityThread.main()方法的调用。MethodAndArgsCaller类的对象是一个异常,被抛出后,被catch到,然后通过对象调用run方法。这样run方法,最终是在ZygoteInit的main方法里面调用的。本文源码版本Android6.0 , SDK版本23通过我的这篇文章:在线查看Android系统源码,可以快速查看在线源码。在线源码链接:/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java具体过程:从ZygoteInit的main方法开始,到调用runOnce方法: