/** * Should guard by {@link VActivityManagerService#mProcessNames} * * @param uid vuid */ public ProcessRecord findProcessLocked(String processName, int uid) { return mProcessNames.get(processName, uid); }
@Override public void killAppByPkg(final String pkg, int userId) { synchronized (mProcessNames) { ArrayMap<String, SparseArray<ProcessRecord>> map = mProcessNames.getMap(); int N = map.size(); while (N-- > 0) { SparseArray<ProcessRecord> uids = map.valueAt(N); for (int i = 0; i < uids.size(); i++) { ProcessRecord r = uids.valueAt(i); if (userId != VUserHandle.USER_ALL) { if (r.userId != userId) { continue; } } if (r.pkgList.contains(pkg)) { killProcess(r.pid); } } } } }
app.pid = pid; synchronized (mProcessNames) { mProcessNames.put(app.processName, app.vuid, app); mPidsSelfLocked.put(app.pid, app);
private void onProcessDead(ProcessRecord record) { mProcessNames.remove(record.processName, record.vuid); mPidsSelfLocked.remove(record.pid); processDead(record); record.lock.open(); }
private void onProcessDead(ProcessRecord record) { mProcessNames.remove(record.processName, record.vuid); mPidsSelfLocked.remove(record.pid); processDead(record); record.lock.open(); }
@Override public void killApplicationProcess(final String processName, int uid) { synchronized (mProcessNames) { ProcessRecord r = mProcessNames.get(processName, uid); if (r != null) { killProcess(r.pid); } } }
private void onProcessDead(ProcessRecord record) { mProcessNames.remove(record.processName, record.vuid); mPidsSelfLocked.remove(record.pid); processDead(record); record.lock.open(); }
@Override public void killAppByPkg(final String pkg, int userId) { synchronized (mProcessNames) { ArrayMap<String, SparseArray<ProcessRecord>> map = mProcessNames.getMap(); int N = map.size(); while (N-- > 0) { SparseArray<ProcessRecord> uids = map.valueAt(N); for (int i = 0; i < uids.size(); i++) { ProcessRecord r = uids.valueAt(i); if (userId != VUserHandle.USER_ALL) { if (r.userId != userId) { continue; } } if (r.pkgList.contains(pkg)) { killProcess(r.pid); } } } } }
app.pid = pid; synchronized (mProcessNames) { mProcessNames.put(app.processName, app.vuid, app); mPidsSelfLocked.put(app.pid, app);
ProcessRecord startProcessIfNeedLocked(String processName, int userId, String packageName) { if (VActivityManagerService.get().getFreeStubCount() < 3) { // run GC killAllApps(); } PackageSetting ps = PackageCacheManager.getSetting(packageName); ApplicationInfo info = VPackageManagerService.get().getApplicationInfo(packageName, 0, userId); if (ps == null || info == null) { return null; } if (!ps.isLaunched(userId)) { sendFirstLaunchBroadcast(ps, userId); ps.setLaunched(userId, true); VAppManagerService.get().savePersistenceData(); } int uid = VUserHandle.getUid(userId, ps.appId); ProcessRecord app = mProcessNames.get(processName, uid); if (app != null && app.client.asBinder().pingBinder()) { return app; } int vpid = queryFreeStubProcessLocked(); if (vpid == -1) { return null; } app = performStartProcessLocked(uid, vpid, info, processName); if (app != null) { app.pkgList.add(info.packageName); } return app; }
@Override public void killAppByPkg(final String pkg, int userId) { synchronized (mProcessNames) { ArrayMap<String, SparseArray<ProcessRecord>> map = mProcessNames.getMap(); int N = map.size(); while (N-- > 0) { SparseArray<ProcessRecord> uids = map.valueAt(N); for (int i = 0; i < uids.size(); i++) { ProcessRecord r = uids.valueAt(i); if (userId != VUserHandle.USER_ALL) { if (r.userId != userId) { continue; } } if (r.pkgList.contains(pkg)) { killProcess(r.pid); } } } } }
app.pid = pid; synchronized (mProcessNames) { mProcessNames.put(app.processName, app.vuid, app); mPidsSelfLocked.put(app.pid, app);
/** * Should guard by {@link VActivityManagerService#mProcessNames} * * @param uid vuid */ public ProcessRecord findProcessLocked(String processName, int uid) { return mProcessNames.get(processName, uid); }
/** * Should guard by {@link VActivityManagerService#mProcessNames} * * @param uid vuid */ public ProcessRecord findProcessLocked(String processName, int uid) { return mProcessNames.get(processName, uid); }
@Override public void killApplicationProcess(final String processName, int uid) { synchronized (mProcessNames) { ProcessRecord r = mProcessNames.get(processName, uid); if (r != null) { killProcess(r.pid); } } }
@Override public void killApplicationProcess(final String processName, int uid) { synchronized (mProcessNames) { ProcessRecord r = mProcessNames.get(processName, uid); if (r != null) { killProcess(r.pid); } } }
ProcessRecord startProcessIfNeedLocked(String processName, int userId, String packageName) { if (VActivityManagerService.get().getFreeStubCount() < 3) { // run GC killAllApps(); } PackageSetting ps = PackageCacheManager.getSetting(packageName); ApplicationInfo info = VPackageManagerService.get().getApplicationInfo(packageName, 0, userId); if (ps == null || info == null) { return null; } if (!ps.isLaunched(userId)) { sendFirstLaunchBroadcast(ps, userId); ps.setLaunched(userId, true); VAppManagerService.get().savePersistenceData(); } int uid = VUserHandle.getUid(userId, ps.appId); ProcessRecord app = mProcessNames.get(processName, uid); if (app != null && app.client.asBinder().pingBinder()) { return app; } int vpid = queryFreeStubProcessLocked(); if (vpid == -1) { return null; } app = performStartProcessLocked(uid, vpid, info, processName); if (app != null) { app.pkgList.add(info.packageName); } return app; }
ProcessRecord startProcessIfNeedLocked(String processName, int userId, String packageName) { if (VActivityManagerService.get().getFreeStubCount() < 3) { // run GC killAllApps(); } PackageSetting ps = PackageCacheManager.getSetting(packageName); ApplicationInfo info = VPackageManagerService.get().getApplicationInfo(packageName, 0, userId); if (ps == null || info == null) { return null; } if (!ps.isLaunched(userId)) { sendFirstLaunchBroadcast(ps, userId); ps.setLaunched(userId, true); VAppManagerService.get().savePersistenceData(); } int uid = VUserHandle.getUid(userId, ps.appId); ProcessRecord app = mProcessNames.get(processName, uid); if (app != null && app.client.asBinder().isBinderAlive()) { return app; } int vpid = queryFreeStubProcessLocked(); if (vpid == -1) { return null; } app = performStartProcessLocked(uid, vpid, info, processName); if (app != null) { app.pkgList.add(info.packageName); } return app; }