调用handleResumeActivity,调用onResume,onPostResume生命周期方法,然后调用makeVisible,添加View到WindowManager,WindowManager的实现类是WindowManagerImpl,WindowManagerImpl的addView又调用了WindowManagerGloble.addView,创建ViewRootImpl对象,并调用了setView函数。
当线程空闲的时候,调用AMS的activityIdle,最终会调回ApplicationThread.scheduleStopActivity.
最后Activity进入Resumed,并通知AMS
到这里一个新的App,就完成启动了,整个App启动过程执行了很多步骤,下图就是分析步骤了,可以方便大家有更好的理解。
以上的就是关于安卓app启动流程的介绍了,各位开发者可以使用友盟 u-apm这款检测工具对app启动流程进行分析,友盟 U-APM通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。另外,还提供了“云真机”服务,友盟 云真机搭载在U-APM应用性能监控平台上,U-APM提供了灵活地测试操作界面,支持ADB调试、WEB远程调试、扫码、抓包、虚拟定位等测试功能,并提供了测试报告供开发者后续查看。