Loading services/core/java/com/android/server/pm/PackageManagerService.java +31 −7 Original line number Diff line number Diff line Loading @@ -15678,14 +15678,28 @@ public class PackageManagerService extends IPackageManager.Stub { } } private void loadPrivatePackages(VolumeInfo vol) { private void loadPrivatePackages(final VolumeInfo vol) { mHandler.post(new Runnable() { @Override public void run() { loadPrivatePackagesInner(vol); } }); } private void loadPrivatePackagesInner(VolumeInfo vol) { final ArrayList<ApplicationInfo> loaded = new ArrayList<>(); final int parseFlags = mDefParseFlags | PackageParser.PARSE_EXTERNAL_STORAGE; synchronized (mInstallLock) { final VersionInfo ver; final List<PackageSetting> packages; synchronized (mPackages) { final VersionInfo ver = mSettings.findOrCreateVersion(vol.fsUuid); final List<PackageSetting> packages = mSettings.getVolumePackagesLPr(vol.fsUuid); ver = mSettings.findOrCreateVersion(vol.fsUuid); packages = mSettings.getVolumePackagesLPr(vol.fsUuid); } for (PackageSetting ps : packages) { synchronized (mInstallLock) { final PackageParser.Package pkg; try { pkg = scanPackageLI(ps.codePath, parseFlags, SCAN_INITIAL, 0L, null); Loading @@ -15698,7 +15712,9 @@ public class PackageManagerService extends IPackageManager.Stub { deleteCodeCacheDirsLI(ps.volumeUuid, ps.name); } } } synchronized (mPackages) { int updateFlags = UPDATE_PERMISSIONS_ALL; if (ver.sdkVersion != mSdkVersion) { logCriticalInfo(Log.INFO, "Platform changed from " + ver.sdkVersion + " to " Loading @@ -15712,13 +15728,21 @@ public class PackageManagerService extends IPackageManager.Stub { mSettings.writeLPr(); } } if (DEBUG_INSTALL) Slog.d(TAG, "Loaded packages " + loaded); sendResourcesChangedBroadcast(true, false, loaded, null); } private void unloadPrivatePackages(VolumeInfo vol) { private void unloadPrivatePackages(final VolumeInfo vol) { mHandler.post(new Runnable() { @Override public void run() { unloadPrivatePackagesInner(vol); } }); } private void unloadPrivatePackagesInner(VolumeInfo vol) { final ArrayList<ApplicationInfo> unloaded = new ArrayList<>(); synchronized (mInstallLock) { synchronized (mPackages) { Loading
services/core/java/com/android/server/pm/PackageManagerService.java +31 −7 Original line number Diff line number Diff line Loading @@ -15678,14 +15678,28 @@ public class PackageManagerService extends IPackageManager.Stub { } } private void loadPrivatePackages(VolumeInfo vol) { private void loadPrivatePackages(final VolumeInfo vol) { mHandler.post(new Runnable() { @Override public void run() { loadPrivatePackagesInner(vol); } }); } private void loadPrivatePackagesInner(VolumeInfo vol) { final ArrayList<ApplicationInfo> loaded = new ArrayList<>(); final int parseFlags = mDefParseFlags | PackageParser.PARSE_EXTERNAL_STORAGE; synchronized (mInstallLock) { final VersionInfo ver; final List<PackageSetting> packages; synchronized (mPackages) { final VersionInfo ver = mSettings.findOrCreateVersion(vol.fsUuid); final List<PackageSetting> packages = mSettings.getVolumePackagesLPr(vol.fsUuid); ver = mSettings.findOrCreateVersion(vol.fsUuid); packages = mSettings.getVolumePackagesLPr(vol.fsUuid); } for (PackageSetting ps : packages) { synchronized (mInstallLock) { final PackageParser.Package pkg; try { pkg = scanPackageLI(ps.codePath, parseFlags, SCAN_INITIAL, 0L, null); Loading @@ -15698,7 +15712,9 @@ public class PackageManagerService extends IPackageManager.Stub { deleteCodeCacheDirsLI(ps.volumeUuid, ps.name); } } } synchronized (mPackages) { int updateFlags = UPDATE_PERMISSIONS_ALL; if (ver.sdkVersion != mSdkVersion) { logCriticalInfo(Log.INFO, "Platform changed from " + ver.sdkVersion + " to " Loading @@ -15712,13 +15728,21 @@ public class PackageManagerService extends IPackageManager.Stub { mSettings.writeLPr(); } } if (DEBUG_INSTALL) Slog.d(TAG, "Loaded packages " + loaded); sendResourcesChangedBroadcast(true, false, loaded, null); } private void unloadPrivatePackages(VolumeInfo vol) { private void unloadPrivatePackages(final VolumeInfo vol) { mHandler.post(new Runnable() { @Override public void run() { unloadPrivatePackagesInner(vol); } }); } private void unloadPrivatePackagesInner(VolumeInfo vol) { final ArrayList<ApplicationInfo> unloaded = new ArrayList<>(); synchronized (mInstallLock) { synchronized (mPackages) {