美文网首页
activity启动过程

activity启动过程

作者: 那个阳光下奔跑的少年 | 来源:发表于2020-05-24 12:11 被阅读0次

    Launcher请求AMS过程

    点击桌面应用图标startActivitySafely,为启动Activity添加一个新的任务栈,调用startActivity,startActivity又调用startActivityForResult,startActivityForResult会调用Instrumentation execStartActivity,execStartActivity拿到AMS代理对象IActivtiyManager调用AMS startActivity.

    AMS到ApplicationThread

    AMS startActivity会调用startActivityAsUser,检查调用者权限,启动理由等。经过ActivityStarter,最后调用到ActivityStackSupervisor startSpecificActivityLocked,这个方法会判断activity所在进程是否存在,如果存在调用realStartActivityLocked,如果不存在通过zygote fork一个进程。realstartActivityLocked调用ActivityThread scheduleLaunchActivity。

    ActivityThread启动activtiy

    ActivityThread scheduleLauncherActivity通过mH发送Launch_activity消息,收到H发送的消息后调用handleLaunchActivtiy,调动performLaunchActivity创建activity并启动。

    zygote创建进程过程

    zygote会开启一个死循环去等待AMS请求,AMS请求后,处理完,会抛出一个异常,catch到这个异常后,反射调用ActivtiyThread main方法。

    相关文章

      网友评论

          本文标题:activity启动过程

          本文链接:https://www.haomeiwen.com/subject/dzccahtx.html