return 0; ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); r.addToBoundIntent(service, connection); return 1;
private ServiceRecord findRecordLocked(IServiceConnection connection) { synchronized (mHistory) { for (ServiceRecord r : mHistory) { if (r.containConnection(connection)) { return r; } } return null; } }
@Override public VParceledListSlice<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags, int userId) { synchronized (mHistory) { List<ActivityManager.RunningServiceInfo> services = new ArrayList<>(mHistory.size()); for (ServiceRecord r : mHistory) { if (r.process.userId != userId) { continue; } ActivityManager.RunningServiceInfo info = new ActivityManager.RunningServiceInfo(); info.uid = r.process.vuid; info.pid = r.process.pid; ProcessRecord processRecord = findProcessLocked(r.process.pid); if (processRecord != null) { info.process = processRecord.processName; info.clientPackage = processRecord.info.packageName; } info.activeSince = r.activeSince; info.lastActivityTime = r.lastActivityTime; info.clientCount = r.getClientCount(); info.service = ComponentUtils.toComponentName(r.serviceInfo); info.started = r.startId > 0; services.add(info); } return new VParceledListSlice<>(services); } }
@Override public void unbindFinished(IBinder token, Intent service, boolean doRebind, int userId) { synchronized (this) { ServiceRecord r = (ServiceRecord) token; if (r != null) { ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); if (boundRecord != null) { boundRecord.doRebind = doRebind; } } } }
ServiceRecord r = findRecordLocked(userId, serviceInfo); if (r == null) { r = new ServiceRecord(); r.startId = 0; r.activeSince = SystemClock.elapsedRealtime();
if (r.startId <= 0 && r.getConnectionCount() <= 0) { try { IApplicationThreadCompat.scheduleStopService(r.process.appThread, r);
void addToBoundIntent(Intent intent, IServiceConnection connection) { IntentBindRecord record = peekBinding(intent); if (record == null) { record = new IntentBindRecord(); record.intent = intent; synchronized (bindings) { bindings.add(record); } } record.addConnection(connection); }
ServiceRecord r = findRecordLocked(userId, serviceInfo); if (r == null) { r = new ServiceRecord(); r.startId = 0; r.activeSince = SystemClock.elapsedRealtime();
if (r.startId <= 0 && r.getConnectionCount() <= 0) { try { IApplicationThreadCompat.scheduleStopService(r.process.appThread, r);
@Override public void publishService(IBinder token, Intent intent, IBinder service, int userId) { synchronized (this) { ServiceRecord r = (ServiceRecord) token; if (r != null) { ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(intent); if (boundRecord != null) { boundRecord.binder = service; for (IServiceConnection conn : boundRecord.connections) { ComponentName component = ComponentUtils.toComponentName(r.serviceInfo); connectService(conn, component, boundRecord, false); } } } } }
return 0; ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); r.addToBoundIntent(service, connection); return 1;
private ServiceRecord findRecordLocked(IServiceConnection connection) { synchronized (mHistory) { for (ServiceRecord r : mHistory) { if (r.containConnection(connection)) { return r; } } return null; } }
@Override public VParceledListSlice<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags, int userId) { synchronized (mHistory) { List<ActivityManager.RunningServiceInfo> services = new ArrayList<>(mHistory.size()); for (ServiceRecord r : mHistory) { if (r.process.userId != userId) { continue; } ActivityManager.RunningServiceInfo info = new ActivityManager.RunningServiceInfo(); info.uid = r.process.vuid; info.pid = r.process.pid; ProcessRecord processRecord = findProcessLocked(r.process.pid); if (processRecord != null) { info.process = processRecord.processName; info.clientPackage = processRecord.info.packageName; } info.activeSince = r.activeSince; info.lastActivityTime = r.lastActivityTime; info.clientCount = r.getClientCount(); info.service = ComponentUtils.toComponentName(r.serviceInfo); info.started = r.startId > 0; services.add(info); } return new VParceledListSlice<>(services); } }
ServiceRecord r = findRecordLocked(userId, serviceInfo); if (r == null) { r = new ServiceRecord(); r.startId = 0; r.activeSince = SystemClock.elapsedRealtime();
if (r.startId <= 0 && r.getConnectionCount() <= 0) { try { IApplicationThreadCompat.scheduleStopService(r.process.appThread, r);
@Override public IBinder peekService(Intent service, String resolvedType, int userId) { synchronized (this) { ServiceInfo serviceInfo = resolveServiceInfo(service, userId); if (serviceInfo == null) { return null; } ServiceRecord r = findRecordLocked(userId, serviceInfo); if (r != null) { ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); if (boundRecord != null) { return boundRecord.binder; } } return null; } }
return 0; ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); r.addToBoundIntent(service, connection); return 1;
private ServiceRecord findRecordLocked(IServiceConnection connection) { synchronized (mHistory) { for (ServiceRecord r : mHistory) { if (r.containConnection(connection)) { return r; } } return null; } }
@Override public VParceledListSlice<ActivityManager.RunningServiceInfo> getServices(int maxNum, int flags, int userId) { synchronized (mHistory) { List<ActivityManager.RunningServiceInfo> services = new ArrayList<>(mHistory.size()); for (ServiceRecord r : mHistory) { if (r.process.userId != userId) { continue; } ActivityManager.RunningServiceInfo info = new ActivityManager.RunningServiceInfo(); info.uid = r.process.vuid; info.pid = r.process.pid; ProcessRecord processRecord = findProcessLocked(r.process.pid); if (processRecord != null) { info.process = processRecord.processName; info.clientPackage = processRecord.info.packageName; } info.activeSince = r.activeSince; info.lastActivityTime = r.lastActivityTime; info.clientCount = r.getClientCount(); info.service = ComponentUtils.toComponentName(r.serviceInfo); info.started = r.startId > 0; services.add(info); } return new VParceledListSlice<>(services); } }
@Override public void unbindFinished(IBinder token, Intent service, boolean doRebind, int userId) { synchronized (this) { ServiceRecord r = (ServiceRecord) token; if (r != null) { ServiceRecord.IntentBindRecord boundRecord = r.peekBinding(service); if (boundRecord != null) { boundRecord.doRebind = doRebind; } } } }