package com.lody.virtual.server.pm; import com.lody.virtual.helper.collection.ArrayMap; import com.lody.virtual.server.pm.parser.PackageParserEx; import com.lody.virtual.server.pm.parser.VPackage; /** * @author Lody */ public class PackageCacheManager { static final ArrayMap<String, VPackage> PACKAGE_CACHE = new ArrayMap<>(); public static int size() { synchronized (PACKAGE_CACHE) { return PACKAGE_CACHE.size(); } } public static void put(VPackage pkg, PackageSetting ps) { synchronized (PackageCacheManager.class) { PackageParserEx.initApplicationInfoBase(ps, pkg); PACKAGE_CACHE.put(pkg.packageName, pkg); pkg.mExtras = ps; VPackageManagerService.get().analyzePackageLocked(pkg); } } public static VPackage get(String packageName) { synchronized (PackageCacheManager.class) { return PACKAGE_CACHE.get(packageName); } } public static PackageSetting getSetting(String packageName) { synchronized (PackageCacheManager.class) { VPackage p = PACKAGE_CACHE.get(packageName); if (p != null) { return (PackageSetting) p.mExtras; } return null; } } public static VPackage remove(String packageName) { synchronized (PackageCacheManager.class) { VPackageManagerService.get().deletePackageLocked(packageName); return PACKAGE_CACHE.remove(packageName); } } }