Jimmy Chen

A Programmer

(原创)PackageManagerService启动流程分析(下)

  这里接着上一篇开始写,上一篇只是讲了在startBootstrapServices中启动PackageManagerService部分的代码,剩余的在startOtherServices中PackageManagerService相关设置操作没有分析到,这一篇接着分析下面遗留的问题:

  • mPackageManagerService.updatePackagesIfNeeded
  • mPackageManagerService.performFstrimIfNeeded
  • mPackageManagerService.systemReady
  • mPackageManagerService.waitForAppDataPrepared

一. mPackageManagerService.updatePackagesIfNeeded

  上面的代码首先判断是否需要对Package进行更新,如果需要更新的话会首先按照Package的重要程度给其赋予一个优先级,然后调用performDexOptUpgrade完成dex优化升级。

二.mPackageManagerService.performFstrimIfNeeded

  上面主要是执行磁盘清理工作,释放磁盘空间。

三.mPackageManagerService.systemReady

  这一部分主要是当PKMS准备就绪是,更新一些Package的信息、默认权限的获取以及通知在等待PKMS就绪的主件。下面接着分析最后一个方法调用。

四.mPackageManagerService.waitForAppDataPrepared

&emps; 上面一段代码看是获取特定的feature的。

  这一篇就到这里啦,简简单单看了下PKMS初始化之后所作的事情。感觉处理第一个函数对package的信息进行更新和第二个函数对存储空间进行回收外并没有做特别多的事情。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注