PackageManagerService
X.apk 会被加载到 data/app目录下,然后扫描这个apk
其实在手机开机时,PMS就会扫描 data/app 和 systemp/app 目录下的没有apk的信息,将这些信息缓存起来。
那他扫描的就是清单文件了(通过PMS的PackageParse去解析,没有apk对应一个缓存对象package,PMS是单独进程)。 PMS负责扫描,AMS负责从里面找入口/调用
有了PMS就理解了为什么我们安装一个用的时候,提示的失败。比如重复的APK,重复的provider-author导致的安装失败。也理解了为什么相同action会提示多个应用可以打开。
当用户点击APK的时候,AMS从PMS拿到入口,启动。AMS将这些信息存到自己的ActivityThread-ActivityClientRecord集合里。
PMS的扫描过程:
在29之后启动线程池去用PackageParse解析
注意:因为PMS也是进程,所以与之通信的都是binder