一、广播分类:
1.标准广播
2.有序广播
3.系统广播
4.动/静态广播
5.内部广播
6.粘性广播
二、广播涉及源文件:(待编辑)
PackageManagerService
三、广播注册:
1.静态注册
![](https://img.haomeiwen.com/i4122469/5a90a74301b22ad0.png)
设备重启后,PackageManagerService首先开始扫描。贴代码
SystemServer.java启动PackageManagerService
pm = PackageManagerService.main(context, installer,
factoryTest != SystemServer.FACTORY_TEST_OFF,
onlyCore);
PackageManagerService通过单例返回一个IPackageManager,然后构造函数中:
File preinstallAppDir = new File(Environment.getRootDirectory(), "preinstall");
File preinstallAppDelDir = new File(Environment.getRootDirectory(),
"preinstall_del");
if (!SystemProperties.getBoolean("persist.sys.preinstalled", false)) {
// mPreInstallObserver = new AppDirObserver(
// mPreinstallAppDir.getPath(), OBSERVER_EVENTS, false);
// mPreInstallObserver.startWatching();
if (preinstallAppDir.exists()) {
// scanDirLI(mPreinstallAppDir, 0, scanMode, 0);
copyPackagesToAppInstallDir(preinstallAppDir);
}
// mPreInstallDelObserver = new AppDirObserver(
// mPreinstallAppDelDir.getPath(), OBSERVER_EVENTS, false);
// mPreInstallDelObserver.startWatching();
if (preinstallAppDelDir.exists()) {
copyPackagesToAppInstallDir(preinstallAppDelDir);
deletePreinstallDir(preinstallAppDelDir);
}
SystemProperties.set("persist.sys.preinstalled", "1");
}
开始拷贝preinstall目录中的apk开始复制到install目录进行安装
2.动态广播
3.广播发送
网友评论