(Android基础)应用程序的安装与卸载

##应用程序的安装

应用程序通过PackageManager提供的installPackage()方法安装程序,请求会发送至PMS的installPackage().

在PMS的installPackage中先通过handle发送一个INIT_COPY的异步信息并携带HandleParams的实现类InstallParams的对象
(InstallParams标志着这是一个全新的安装,HandleParams还有一个子类MoveParams,这是一个对已安装应用进行拷贝的实现类)

异步消息处理线程接受到信息后,先确认DefaultMediaService是否已经绑定成功,然后向DefaultMediaService确认是否可以安装,以及获得可安装的位置
然后根据返回的安装位置开始拷贝安装包到对应的路径.
(tips:第三方应用为/data/app),

拷贝完成后,PMS下监听文件目录下文件变化的监听者(AppDirObserver),开始调用scanPackageLI解析新增的应用程序

##应用程序的卸载

应用程序通过PackageManager提供的deletePackage方法卸载程序,卸载步骤和安装步骤相反,

先是删除mPackages里面的包信息,以及全局变量
mActivities,mServices,mProvider,mReceivers保存的组件信息
然后调用Installer删除私有目录/data/data下的目录文件
然后bindService通过DefaultContainerService清除外部存储区数据
然后清空mSettings里面的相关数据,并将清除后的mSettings重新写入

您的一份奖励,就是我的一份激励