1、启动入口
2、Instrumentation对象
3、ActivityManager
4、通过ServiceManager获得ActivityManagerService(AMS)
、
5、AMS中的startActivity
6、ActivityStarter
7、ActivityStackSupervisor
8、LocalServices
9、启动组件的关键步骤检查启动的类是否存在,这个是由PackManagerService管理的,生成过程请看大神的文章
https://www.jianshu.com/p/adaa1a39a274
在这个服务生成后会注册一些本地服务,在LocalSeervices.getSerVice中看出是从Map中拿出服务,那么在PMS搜索
PackageManagerInternal关键字,找到其真正实现类
10、PackageManagerInternalImpl中的resolveIntent方法
11、queryIntentActivitiesInternal
12、getInstantAppPackageName,获取包名的剩下的就比较简单了
13、接下来看下
final String pkgName = intent.getPackage(); ComponentName comp = intent.getComponent();
这两行代码,我们在初始化intent的时候显示启动的有
由此可见一般不为空,在LauncherActivity中
通过上图的Intent intent = new Intent(mIntent);
14、接下来
16、获取ActivityInfo信息
17、检查完毕后
18、继续
19、初始化要启动的类