首页天道酬勤activity启动方法,activity开发流程

activity启动方法,activity开发流程

张世龙 05-06 09:20 82次浏览

文章目录1、前置理解2、活动启动的流程3、QA1,为什么Zygote而不是新流程孵化流程呢?

一、提前了解init流程: init是所有linux程序的起点,是Zygote的父流程。 解析init.rc孵化Zygote进程Zygote进程。 Zygote是所有Java进程的父进程,而所有App进程都是Zygote进程fork生成的system_sever进程。 system_sever是Zygote孵化的第一个过程。 system_sever负责整个Java框架的启动和管理,AMS、PMS等服务Launcher:Zygote流程孵化的第一个App流程是launcherapplicationthread:AMS和active 主要用于接收AMS发送的消息,并相应地处理活动线程。 activitythread在UI线程(主线程)上运行,App的真正入口AMS负责管理四个主要组件和进程,包括生命周期和状态切换。 由于AMS与ui进行交互,因此它非常复杂,与窗口、活动启动相关的进程(1) startActivity )最终调用startActivityForResult )方法。 然后,必须通过ActivityManagerProxy调用和启动system_sever进程的Activitymanagerservice(AMS )的startActivity )方法调用名为Zygote fork的应用进程,(2)创建进程后,调用应用的ActivityThread的主(main )方法。 main )方法调用ActivityThread的attach (添加)方法,并将APP应用程序绑定到ActivityManagerService (存储APP应用程序应用程序thread的代理对象) 然后,打开loop )循环接收消息(3) ActivityManagerService通过ApplicationThread的代理发送消息通知, 启动ActivityThread内部Handler#handleLaunchActivity的performLaunchActivity,handleResumeActivity (即,Activity的onCreate,onstty ) 每个APP应用程序都在各自的Dalvik虚拟机上运行,每次运行APP应用程序时,都必须重新初始化并启动虚拟机。 这个过程需要时间。 Zygote负责共享已在运行的虚拟机的代码和内存信息,预加载资源和类,从而减少启动时间。

activiti面试常见问题,Activity启动模式