这里主要针对Android 8.0 在PKMS这块的新变化进行分析,会不断更新
如果发现有错误或者不到位的地方,请指出,谢谢!
回忆一下在Android 7.0是如何扫描APK的:
private PackageParser.Package scanPackageLI(File scanFile, int parseFlags, int scanFlags,
long currentTime, UserHandle user) throws PackageManagerException {
......
PackageParser pp = new PackageParser();
......
final PackageParser.Package pkg;
try {
pkg = pp.parsePackage(scanFile, parseFlags);
}
......
return scanPackageLI(pkg, scanFile, parseFlags, scanFlags, currentTime, user);
}
这样,如果在系统预置APK较多的情况下,必然会导致开机时间变慢
在之前的项目中,我们都是自己加一个简单的多线程来扫描APK
在阅读8.0的代码时发现,google已经为我们添加了这个功能,而且比之前的方案更高端,详细看看
在private void scanDirLI(File dir, int parseFlags, int scanFlags, long currentTime)
方法中:
private void scanDirLI(File dir, int parseFlags, int scanFla