设为首页 加入收藏

TOP

Android Java代码的启动
2014-11-23 21:36:27 来源: 作者: 【 】 浏览:17
Tags:Android Java 代码 启动

A)init.rc中启动了:


1)servicemanager(源码在frameswork/base/cmds/servicemanager/service_manager.c)


2)app_process(源码在frameworks/base/cmds/app_process/app_main.cpp)


3)mediaserver(源码在frameworks/base/media/mediaserver/main_mediaserver.cpp)


B)app_process的main()中调用了AppRuntime(源码在frameworks/base/core/jni/AndroidRuntime.cpp)的start()方法,将“com.android.internal.os.ZygoteInit”传入。


C)AppRuntime的start()该方法最终调用了ZygoteInit(源码在framewors/base/core/java/com/android/internal/os/ZygoteInit.java)的main()方法,同时该方法将android虚拟机使用的native方法注册了(startReg()).


D)ZygoteInit的main()调用了startSystemServer(),startSystemServer()调用handleSystemServerProcess(),handleSystemServerProcess()调用RuntimeInit.zygoteInit(),RuntimeInit.zygoteInit()调用invokeStaticMain(),这个函数顺利执行最终会扔出异常ZygoteInit.MethodAndArgsCaller。这是一个实现了Runnable的异常,由ZygoteInit的main()捕获并调用run()。


E)MethodAndArgsCaller的run()调用SystemServer的mian()方法,init1()和init2()依次执行,ServerThread线程启动,java层的各service初始化、开始运行。ActivityManagerService的systemReady()被调用。


F)ActivityManagerService的systemReady()最终调用resumeTopActivityLocked(),该方法调用startHomeActivityLocked(),这个方法里构造了呼叫HOME的intent,最终HOME启动。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android进程间通信:使用AIDL 下一篇Python编程中的反模式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: