Loading services/core/java/com/android/server/am/ActiveServices.java +36 −5 Original line number Diff line number Diff line Loading @@ -63,6 +63,12 @@ import static android.os.Process.SYSTEM_UID; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static com.android.internal.messages.nano.SystemMessageProto.SystemMessage.NOTE_FOREGROUND_SERVICE_BG_LAUNCH; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__BIND; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__START; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOREGROUND_SERVICE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; Loading Loading @@ -522,8 +528,9 @@ public final class ActiveServices { + " delayedStop=" + r.delayedStop); } else { try { startServiceInnerLocked(this, r.pendingStarts.get(0).intent, r, false, true); final ServiceRecord.StartItem si = r.pendingStarts.get(0); startServiceInnerLocked(this, si.intent, r, false, true, si.callingId, r.startRequested); } catch (TransactionTooLargeException e) { // Ignore, nobody upstack cares. } Loading Loading @@ -865,6 +872,7 @@ public final class ActiveServices { if (unscheduleServiceRestartLocked(r, callingUid, false)) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "START SERVICE WHILE RESTART PENDING: " + r); } final boolean wasStartRequested = r.startRequested; r.lastActivity = SystemClock.uptimeMillis(); r.startRequested = true; r.delayedStop = false; Loading Loading @@ -954,7 +962,8 @@ public final class ActiveServices { if (allowBackgroundActivityStarts) { r.allowBgActivityStartsOnServiceStart(backgroundActivityStartsToken); } ComponentName cmp = startServiceInnerLocked(smap, service, r, callerFg, addToStarting); ComponentName cmp = startServiceInnerLocked(smap, service, r, callerFg, addToStarting, callingUid, wasStartRequested); return cmp; } Loading Loading @@ -1150,7 +1159,8 @@ public final class ActiveServices { } ComponentName startServiceInnerLocked(ServiceMap smap, Intent service, ServiceRecord r, boolean callerFg, boolean addToStarting) throws TransactionTooLargeException { boolean callerFg, boolean addToStarting, int callingUid, boolean wasStartRequested) throws TransactionTooLargeException { synchronized (mAm.mProcessStats.mLock) { final ServiceState stracker = r.getTracker(); if (stracker != null) { Loading @@ -1177,6 +1187,15 @@ public final class ActiveServices { return new ComponentName("!!", error); } FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, uid, callingUid, ActivityManagerService.getShortAction(service.getAction()), SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__START, false, r.app == null || r.app.getThread() == null ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD : (wasStartRequested || !r.getConnections().isEmpty() ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT : SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM)); if (r.startRequested && addToStarting) { boolean first = smap.mStartingBackground.size() == 0; smap.mStartingBackground.add(r); Loading Loading @@ -2876,6 +2895,8 @@ public final class ActiveServices { mAm.requireAllowedAssociationsLocked(s.appInfo.packageName); } final boolean wasStartRequested = s.startRequested; final boolean hadConnections = !s.getConnections().isEmpty(); mAm.startAssociationLocked(callerApp.uid, callerApp.processName, callerApp.mState.getCurProcState(), s.appInfo.uid, s.appInfo.longVersionCode, s.instanceName, s.processName); Loading Loading @@ -2962,6 +2983,15 @@ public final class ActiveServices { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); } FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, s.appInfo.uid, callingUid, ActivityManagerService.getShortAction(service.getAction()), SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__BIND, false, s.app == null || s.app.getThread() == null ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD : (wasStartRequested || hadConnections ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT : SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM)); if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Bind " + s + " with " + b + ": received=" + b.intent.received + " apps=" + b.intent.apps.size() Loading Loading @@ -6917,7 +6947,8 @@ public final class ActiveServices { durationMs, r.mStartForegroundCount, ActivityManagerUtils.hashComponentNameForAtom(r.shortInstanceName), r.mFgsHasNotificationPermission); r.mFgsHasNotificationPermission, r.foregroundServiceType); int event = 0; if (state == FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER) { Loading services/core/java/com/android/server/am/ActivityManagerService.java +16 −10 Original line number Diff line number Diff line Loading @@ -5003,15 +5003,7 @@ public class ActivityManagerService extends IActivityManager.Stub final HostingRecord hostingRecord = app.getHostingRecord(); final String action = hostingRecord.getAction(); String shortAction = action; if (action != null) { // only log the last part of the action string to save stats data. int index = action.lastIndexOf("."); if (index != -1 && index != action.length() - 1) { shortAction = action.substring(index + 1); } } String shortAction = getShortAction(hostingRecord.getAction()); FrameworkStatsLog.write( FrameworkStatsLog.PROCESS_START_TIME, app.info.uid, Loading Loading @@ -5042,6 +5034,20 @@ public class ActivityManagerService extends IActivityManager.Stub } } /** * @return The last part of the string of an intent's action. */ static @Nullable String getShortAction(@Nullable String action) { String shortAction = action; if (action != null) { int index = action.lastIndexOf('.'); if (index != -1 && index != action.length() - 1) { shortAction = action.substring(index + 1); } } return shortAction; } void checkTime(long startTime, String where) { long now = SystemClock.uptimeMillis(); if ((now - startTime) > 50) { Loading Loading @@ -14262,7 +14268,7 @@ public class ActivityManagerService extends IActivityManager.Stub oldQueue.performReceiveLocked(oldRecord.callerApp, oldRecord.resultTo, oldRecord.intent, Activity.RESULT_CANCELED, null, null, false, false, oldRecord.userId); false, false, oldRecord.userId, oldRecord.callingUid, callingUid); } catch (RemoteException e) { Slog.w(TAG, "Failure [" + queue.mQueueName + "] sending broadcast result of " services/core/java/com/android/server/am/BroadcastQueue.java +28 −7 Original line number Diff line number Diff line Loading @@ -24,6 +24,11 @@ import static android.text.TextUtils.formatSimple; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED__EVENT__BOOT_COMPLETED; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED__EVENT__LOCKED_BOOT_COMPLETED; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__RUNTIME; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_DEFERRAL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_LIGHT; Loading Loading @@ -316,7 +321,7 @@ public final class BroadcastQueue { } private final void processCurBroadcastLocked(BroadcastRecord r, ProcessRecord app) throws RemoteException { ProcessRecord app, int receiverType, int processTemperature) throws RemoteException { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Process cur broadcast " + r + " for app " + app); final IApplicationThread thread = app.getThread(); Loading Loading @@ -362,6 +367,10 @@ public final class BroadcastQueue { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Process cur broadcast " + r + " DELIVERED for app " + app); started = true; FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, app.uid, r.callingUid == -1 ? Process.SYSTEM_UID : r.callingUid, ActivityManagerService.getShortAction(r.intent.getAction()), receiverType, processTemperature); } finally { if (!started) { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, Loading Loading @@ -398,7 +407,9 @@ public final class BroadcastQueue { } try { mPendingBroadcast = null; processCurBroadcastLocked(br, app); processCurBroadcastLocked(br, app, BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD); didSomething = true; } catch (Exception e) { Slog.w(TAG, "Exception in new application when starting receiver " Loading Loading @@ -628,8 +639,8 @@ public final class BroadcastQueue { void performReceiveLocked(ProcessRecord app, IIntentReceiver receiver, Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) throws RemoteException { boolean ordered, boolean sticky, int sendingUser, int receiverUid, int callingUid) throws RemoteException { // Send the intent to the receiver asynchronously using one-way binder calls. if (app != null) { final IApplicationThread thread = app.getThread(); Loading Loading @@ -663,6 +674,12 @@ public final class BroadcastQueue { receiver.performReceive(intent, resultCode, data, extras, ordered, sticky, sendingUser); } FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, receiverUid == -1 ? Process.SYSTEM_UID : receiverUid, callingUid == -1 ? Process.SYSTEM_UID : callingUid, ActivityManagerService.getShortAction(intent.getAction()), BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__RUNTIME, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM); } private void deliverToRegisteredReceiverLocked(BroadcastRecord r, Loading Loading @@ -965,7 +982,8 @@ public final class BroadcastQueue { maybeReportBroadcastDispatchedEventLocked(r, filter.owningUid); performReceiveLocked(filter.receiverList.app, filter.receiverList.receiver, new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, r.ordered, r.initialSticky, r.userId); r.resultExtras, r.ordered, r.initialSticky, r.userId, filter.receiverList.uid, r.callingUid); // parallel broadcasts are fire-and-forget, not bookended by a call to // finishReceiverLocked(), so we manage their activity-start token here if (filter.receiverList.app != null Loading Loading @@ -1317,7 +1335,8 @@ public final class BroadcastQueue { } performReceiveLocked(r.callerApp, r.resultTo, new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, false, false, r.userId); r.resultData, r.resultExtras, false, false, r.userId, r.callingUid, r.callingUid); logBootCompletedBroadcastCompletionLatencyIfPossible(r); // Set this to null so that the reference // (local and remote) isn't kept in the mBroadcastHistory. Loading Loading @@ -1837,7 +1856,9 @@ public final class BroadcastQueue { app.addPackage(info.activityInfo.packageName, info.activityInfo.applicationInfo.longVersionCode, mService.mProcessStats); maybeAddAllowBackgroundActivityStartsToken(app, r); processCurBroadcastLocked(r, app); processCurBroadcastLocked(r, app, BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM); return; } catch (RemoteException e) { Slog.w(TAG, "Exception when sending broadcast to " Loading Loading
services/core/java/com/android/server/am/ActiveServices.java +36 −5 Original line number Diff line number Diff line Loading @@ -63,6 +63,12 @@ import static android.os.Process.SYSTEM_UID; import static android.os.Process.ZYGOTE_POLICY_FLAG_EMPTY; import static com.android.internal.messages.nano.SystemMessageProto.SystemMessage.NOTE_FOREGROUND_SERVICE_BG_LAUNCH; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__BIND; import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__START; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOREGROUND_SERVICE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU; Loading Loading @@ -522,8 +528,9 @@ public final class ActiveServices { + " delayedStop=" + r.delayedStop); } else { try { startServiceInnerLocked(this, r.pendingStarts.get(0).intent, r, false, true); final ServiceRecord.StartItem si = r.pendingStarts.get(0); startServiceInnerLocked(this, si.intent, r, false, true, si.callingId, r.startRequested); } catch (TransactionTooLargeException e) { // Ignore, nobody upstack cares. } Loading Loading @@ -865,6 +872,7 @@ public final class ActiveServices { if (unscheduleServiceRestartLocked(r, callingUid, false)) { if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "START SERVICE WHILE RESTART PENDING: " + r); } final boolean wasStartRequested = r.startRequested; r.lastActivity = SystemClock.uptimeMillis(); r.startRequested = true; r.delayedStop = false; Loading Loading @@ -954,7 +962,8 @@ public final class ActiveServices { if (allowBackgroundActivityStarts) { r.allowBgActivityStartsOnServiceStart(backgroundActivityStartsToken); } ComponentName cmp = startServiceInnerLocked(smap, service, r, callerFg, addToStarting); ComponentName cmp = startServiceInnerLocked(smap, service, r, callerFg, addToStarting, callingUid, wasStartRequested); return cmp; } Loading Loading @@ -1150,7 +1159,8 @@ public final class ActiveServices { } ComponentName startServiceInnerLocked(ServiceMap smap, Intent service, ServiceRecord r, boolean callerFg, boolean addToStarting) throws TransactionTooLargeException { boolean callerFg, boolean addToStarting, int callingUid, boolean wasStartRequested) throws TransactionTooLargeException { synchronized (mAm.mProcessStats.mLock) { final ServiceState stracker = r.getTracker(); if (stracker != null) { Loading @@ -1177,6 +1187,15 @@ public final class ActiveServices { return new ComponentName("!!", error); } FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, uid, callingUid, ActivityManagerService.getShortAction(service.getAction()), SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__START, false, r.app == null || r.app.getThread() == null ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD : (wasStartRequested || !r.getConnections().isEmpty() ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT : SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM)); if (r.startRequested && addToStarting) { boolean first = smap.mStartingBackground.size() == 0; smap.mStartingBackground.add(r); Loading Loading @@ -2876,6 +2895,8 @@ public final class ActiveServices { mAm.requireAllowedAssociationsLocked(s.appInfo.packageName); } final boolean wasStartRequested = s.startRequested; final boolean hadConnections = !s.getConnections().isEmpty(); mAm.startAssociationLocked(callerApp.uid, callerApp.processName, callerApp.mState.getCurProcState(), s.appInfo.uid, s.appInfo.longVersionCode, s.instanceName, s.processName); Loading Loading @@ -2962,6 +2983,15 @@ public final class ActiveServices { mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE); } FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, s.appInfo.uid, callingUid, ActivityManagerService.getShortAction(service.getAction()), SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__BIND, false, s.app == null || s.app.getThread() == null ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD : (wasStartRequested || hadConnections ? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT : SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM)); if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Bind " + s + " with " + b + ": received=" + b.intent.received + " apps=" + b.intent.apps.size() Loading Loading @@ -6917,7 +6947,8 @@ public final class ActiveServices { durationMs, r.mStartForegroundCount, ActivityManagerUtils.hashComponentNameForAtom(r.shortInstanceName), r.mFgsHasNotificationPermission); r.mFgsHasNotificationPermission, r.foregroundServiceType); int event = 0; if (state == FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER) { Loading
services/core/java/com/android/server/am/ActivityManagerService.java +16 −10 Original line number Diff line number Diff line Loading @@ -5003,15 +5003,7 @@ public class ActivityManagerService extends IActivityManager.Stub final HostingRecord hostingRecord = app.getHostingRecord(); final String action = hostingRecord.getAction(); String shortAction = action; if (action != null) { // only log the last part of the action string to save stats data. int index = action.lastIndexOf("."); if (index != -1 && index != action.length() - 1) { shortAction = action.substring(index + 1); } } String shortAction = getShortAction(hostingRecord.getAction()); FrameworkStatsLog.write( FrameworkStatsLog.PROCESS_START_TIME, app.info.uid, Loading Loading @@ -5042,6 +5034,20 @@ public class ActivityManagerService extends IActivityManager.Stub } } /** * @return The last part of the string of an intent's action. */ static @Nullable String getShortAction(@Nullable String action) { String shortAction = action; if (action != null) { int index = action.lastIndexOf('.'); if (index != -1 && index != action.length() - 1) { shortAction = action.substring(index + 1); } } return shortAction; } void checkTime(long startTime, String where) { long now = SystemClock.uptimeMillis(); if ((now - startTime) > 50) { Loading Loading @@ -14262,7 +14268,7 @@ public class ActivityManagerService extends IActivityManager.Stub oldQueue.performReceiveLocked(oldRecord.callerApp, oldRecord.resultTo, oldRecord.intent, Activity.RESULT_CANCELED, null, null, false, false, oldRecord.userId); false, false, oldRecord.userId, oldRecord.callingUid, callingUid); } catch (RemoteException e) { Slog.w(TAG, "Failure [" + queue.mQueueName + "] sending broadcast result of "
services/core/java/com/android/server/am/BroadcastQueue.java +28 −7 Original line number Diff line number Diff line Loading @@ -24,6 +24,11 @@ import static android.text.TextUtils.formatSimple; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED__EVENT__BOOT_COMPLETED; import static com.android.internal.util.FrameworkStatsLog.BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED__EVENT__LOCKED_BOOT_COMPLETED; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST; import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__RUNTIME; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_DEFERRAL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST_LIGHT; Loading Loading @@ -316,7 +321,7 @@ public final class BroadcastQueue { } private final void processCurBroadcastLocked(BroadcastRecord r, ProcessRecord app) throws RemoteException { ProcessRecord app, int receiverType, int processTemperature) throws RemoteException { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Process cur broadcast " + r + " for app " + app); final IApplicationThread thread = app.getThread(); Loading Loading @@ -362,6 +367,10 @@ public final class BroadcastQueue { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, "Process cur broadcast " + r + " DELIVERED for app " + app); started = true; FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, app.uid, r.callingUid == -1 ? Process.SYSTEM_UID : r.callingUid, ActivityManagerService.getShortAction(r.intent.getAction()), receiverType, processTemperature); } finally { if (!started) { if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST, Loading Loading @@ -398,7 +407,9 @@ public final class BroadcastQueue { } try { mPendingBroadcast = null; processCurBroadcastLocked(br, app); processCurBroadcastLocked(br, app, BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD); didSomething = true; } catch (Exception e) { Slog.w(TAG, "Exception in new application when starting receiver " Loading Loading @@ -628,8 +639,8 @@ public final class BroadcastQueue { void performReceiveLocked(ProcessRecord app, IIntentReceiver receiver, Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) throws RemoteException { boolean ordered, boolean sticky, int sendingUser, int receiverUid, int callingUid) throws RemoteException { // Send the intent to the receiver asynchronously using one-way binder calls. if (app != null) { final IApplicationThread thread = app.getThread(); Loading Loading @@ -663,6 +674,12 @@ public final class BroadcastQueue { receiver.performReceive(intent, resultCode, data, extras, ordered, sticky, sendingUser); } FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, receiverUid == -1 ? Process.SYSTEM_UID : receiverUid, callingUid == -1 ? Process.SYSTEM_UID : callingUid, ActivityManagerService.getShortAction(intent.getAction()), BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__RUNTIME, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM); } private void deliverToRegisteredReceiverLocked(BroadcastRecord r, Loading Loading @@ -965,7 +982,8 @@ public final class BroadcastQueue { maybeReportBroadcastDispatchedEventLocked(r, filter.owningUid); performReceiveLocked(filter.receiverList.app, filter.receiverList.receiver, new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, r.ordered, r.initialSticky, r.userId); r.resultExtras, r.ordered, r.initialSticky, r.userId, filter.receiverList.uid, r.callingUid); // parallel broadcasts are fire-and-forget, not bookended by a call to // finishReceiverLocked(), so we manage their activity-start token here if (filter.receiverList.app != null Loading Loading @@ -1317,7 +1335,8 @@ public final class BroadcastQueue { } performReceiveLocked(r.callerApp, r.resultTo, new Intent(r.intent), r.resultCode, r.resultData, r.resultExtras, false, false, r.userId); r.resultData, r.resultExtras, false, false, r.userId, r.callingUid, r.callingUid); logBootCompletedBroadcastCompletionLatencyIfPossible(r); // Set this to null so that the reference // (local and remote) isn't kept in the mBroadcastHistory. Loading Loading @@ -1837,7 +1856,9 @@ public final class BroadcastQueue { app.addPackage(info.activityInfo.packageName, info.activityInfo.applicationInfo.longVersionCode, mService.mProcessStats); maybeAddAllowBackgroundActivityStartsToken(app, r); processCurBroadcastLocked(r, app); processCurBroadcastLocked(r, app, BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__MANIFEST, BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM); return; } catch (RemoteException e) { Slog.w(TAG, "Exception when sending broadcast to " Loading