本文主要是介绍安卓PackageManagerService scanDirLI流程分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近整理PackageMangerService相关代码,追到scanDirLI这部分内容,感觉整个流程非常繁琐,这一步又是安卓开机必经的路径,在PackageMangerService的构造函数中会把所有机器安装的app进行扫描(加密模式下普通用户app不被扫描onlyCore模式),其中会检查apk的合法性,扫描apk中的AndoridManifens.xml的一些属性,以及读取apk的asset等,并且记录到mSettings这个数据结构体中,也是开机过程中最耗时的一部分操作,在安卓8.0以前都是单线程扫描,8.0及以后采用多线程模式。所以这部分有必要单独整理,整个过程见如下流程图,部分操作被省略,但是整理的函数跳转以及处理都被记录下来。
流程图的读法:
当流程中间有带参数的代表发生了函数跳转,当这部分函数执行完会有返回的箭头,然后继续执行上次函数内部的内容,关于流程图内有疑问以及错误欢迎及时指出,此流程中部分的解释后续会在图片下做讲解。
这篇关于安卓PackageManagerService scanDirLI流程分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!