Merge "Add package state in service/broadcast/cp/activity atoms."
This commit is contained in:
committed by
Android (Google) Code Review
commit
aafd8fabbd
@@ -88,6 +88,8 @@ import static com.android.internal.util.FrameworkStatsLog.FOREGROUND_SERVICE_STA
|
||||
import static com.android.internal.util.FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER;
|
||||
import static com.android.internal.util.FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT;
|
||||
import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED;
|
||||
import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED;
|
||||
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;
|
||||
@@ -1276,6 +1278,10 @@ public final class ActiveServices {
|
||||
return new ComponentName("!!", error);
|
||||
}
|
||||
|
||||
final boolean wasStopped = (r.appInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0;
|
||||
final int packageState = wasStopped
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, uid, callingUid,
|
||||
service.getAction(),
|
||||
SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__START, false,
|
||||
@@ -1285,7 +1291,8 @@ public final class ActiveServices {
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM),
|
||||
getShortProcessNameForStats(callingUid, callingProcessName),
|
||||
getShortServiceNameForStats(r));
|
||||
getShortServiceNameForStats(r),
|
||||
packageState);
|
||||
|
||||
if (r.startRequested && addToStarting) {
|
||||
boolean first = smap.mStartingBackground.size() == 0;
|
||||
@@ -3439,6 +3446,7 @@ public final class ActiveServices {
|
||||
mAm.requireAllowedAssociationsLocked(s.appInfo.packageName);
|
||||
}
|
||||
|
||||
final boolean wasStopped = (s.appInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0;
|
||||
final boolean wasStartRequested = s.startRequested;
|
||||
final boolean hadConnections = !s.getConnections().isEmpty();
|
||||
mAm.startAssociationLocked(callerApp.uid, callerApp.processName,
|
||||
@@ -3525,6 +3533,9 @@ public final class ActiveServices {
|
||||
mAm.updateOomAdjPendingTargetsLocked(OomAdjuster.OOM_ADJ_REASON_BIND_SERVICE);
|
||||
}
|
||||
|
||||
final int packageState = wasStopped
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
FrameworkStatsLog.write(SERVICE_REQUEST_EVENT_REPORTED, s.appInfo.uid, callingUid,
|
||||
ActivityManagerService.getShortAction(service.getAction()),
|
||||
SERVICE_REQUEST_EVENT_REPORTED__REQUEST_TYPE__BIND, false,
|
||||
@@ -3534,7 +3545,8 @@ public final class ActiveServices {
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_HOT
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM),
|
||||
getShortProcessNameForStats(callingUid, callerApp.processName),
|
||||
getShortServiceNameForStats(s));
|
||||
getShortServiceNameForStats(s),
|
||||
packageState);
|
||||
|
||||
if (DEBUG_SERVICE) Slog.v(TAG_SERVICE, "Bind " + s + " with " + b
|
||||
+ ": received=" + b.intent.received
|
||||
|
||||
@@ -154,6 +154,12 @@ class BroadcastProcessQueue {
|
||||
*/
|
||||
private boolean mActiveViaColdStart;
|
||||
|
||||
/**
|
||||
* Flag indicating that the currently active broadcast is being dispatched
|
||||
* to a package that was in the stopped state.
|
||||
*/
|
||||
private boolean mActiveWasStopped;
|
||||
|
||||
/**
|
||||
* Number of consecutive urgent broadcasts that have been dispatched
|
||||
* since the last non-urgent dispatch.
|
||||
@@ -461,10 +467,18 @@ class BroadcastProcessQueue {
|
||||
mActiveViaColdStart = activeViaColdStart;
|
||||
}
|
||||
|
||||
public void setActiveWasStopped(boolean activeWasStopped) {
|
||||
mActiveWasStopped = activeWasStopped;
|
||||
}
|
||||
|
||||
public boolean getActiveViaColdStart() {
|
||||
return mActiveViaColdStart;
|
||||
}
|
||||
|
||||
public boolean getActiveWasStopped() {
|
||||
return mActiveWasStopped;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get package name of the first application loaded into this process.
|
||||
*/
|
||||
@@ -484,6 +498,7 @@ class BroadcastProcessQueue {
|
||||
final boolean wouldBeSkipped = (next.argi2 == 1);
|
||||
mActiveCountSinceIdle++;
|
||||
mActiveViaColdStart = false;
|
||||
mActiveWasStopped = false;
|
||||
next.recycle();
|
||||
onBroadcastDequeued(mActive, mActiveIndex, wouldBeSkipped);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVE
|
||||
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.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED;
|
||||
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;
|
||||
@@ -51,6 +53,7 @@ import android.content.ContentResolver;
|
||||
import android.content.IIntentReceiver;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.content.pm.UserInfo;
|
||||
@@ -588,6 +591,11 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
final long elapsed = finishTime - r.receiverTime;
|
||||
r.state = BroadcastRecord.IDLE;
|
||||
final int curIndex = r.nextReceiver - 1;
|
||||
|
||||
final int packageState = r.mWasReceiverAppStopped
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
|
||||
if (curIndex >= 0 && curIndex < r.receivers.size() && r.curApp != null) {
|
||||
final Object curReceiver = r.receivers.get(curIndex);
|
||||
FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, r.curApp.uid,
|
||||
@@ -601,7 +609,8 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
: BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD,
|
||||
r.dispatchTime - r.enqueueTime,
|
||||
r.receiverTime - r.dispatchTime,
|
||||
finishTime - r.receiverTime);
|
||||
finishTime - r.receiverTime,
|
||||
packageState);
|
||||
}
|
||||
if (state == BroadcastRecord.IDLE) {
|
||||
Slog.w(TAG_BROADCAST, "finishReceiver [" + mQueueName + "] called but state is IDLE");
|
||||
@@ -664,6 +673,7 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
r.curReceiver = null;
|
||||
r.curApp = null;
|
||||
r.curFilteredExtras = null;
|
||||
r.mWasReceiverAppStopped = false;
|
||||
mPendingBroadcast = null;
|
||||
|
||||
r.resultCode = resultCode;
|
||||
@@ -778,7 +788,8 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
intent.getAction(),
|
||||
BROADCAST_DELIVERY_EVENT_REPORTED__RECEIVER_TYPE__RUNTIME,
|
||||
BROADCAST_DELIVERY_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM,
|
||||
dispatchDelay, receiveDelay, 0 /* finish_delay */);
|
||||
dispatchDelay, receiveDelay, 0 /* finish_delay */,
|
||||
SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1436,6 +1447,9 @@ public class BroadcastQueueImpl extends BroadcastQueue {
|
||||
// restart the application.
|
||||
}
|
||||
|
||||
// Registered whether we're bringing this package out of a stopped state
|
||||
r.mWasReceiverAppStopped =
|
||||
(info.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0;
|
||||
// Not running -- get it started, to be executed when the app comes up.
|
||||
if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST,
|
||||
"Need to start app ["
|
||||
|
||||
@@ -25,6 +25,8 @@ import static com.android.internal.util.FrameworkStatsLog.BROADCAST_DELIVERY_EVE
|
||||
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.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
import static com.android.internal.util.FrameworkStatsLog.SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED;
|
||||
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BROADCAST;
|
||||
import static com.android.server.am.BroadcastProcessQueue.insertIntoRunnableList;
|
||||
import static com.android.server.am.BroadcastProcessQueue.reasonToString;
|
||||
@@ -773,6 +775,9 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
|
||||
final ApplicationInfo info = ((ResolveInfo) receiver).activityInfo.applicationInfo;
|
||||
final ComponentName component = ((ResolveInfo) receiver).activityInfo.getComponentName();
|
||||
|
||||
if ((info.flags & ApplicationInfo.FLAG_STOPPED) != 0) {
|
||||
queue.setActiveWasStopped(true);
|
||||
}
|
||||
final int intentFlags = r.intent.getFlags() | Intent.FLAG_FROM_BACKGROUND;
|
||||
final HostingRecord hostingRecord = new HostingRecord(HostingRecord.HOSTING_TYPE_BROADCAST,
|
||||
component, r.intent.getAction(), r.getHostingRecordTriggerType());
|
||||
@@ -1786,8 +1791,13 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
|
||||
final long dispatchDelay = r.scheduledTime[index] - r.enqueueTime;
|
||||
final long receiveDelay = 0;
|
||||
final long finishDelay = r.terminalTime[index] - r.scheduledTime[index];
|
||||
FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, uid, senderUid, actionName,
|
||||
receiverType, type, dispatchDelay, receiveDelay, finishDelay);
|
||||
if (queue != null) {
|
||||
final int packageState = queue.getActiveWasStopped()
|
||||
? SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: SERVICE_REQUEST_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
FrameworkStatsLog.write(BROADCAST_DELIVERY_EVENT_REPORTED, uid, senderUid, actionName,
|
||||
receiverType, type, dispatchDelay, receiveDelay, finishDelay, packageState);
|
||||
}
|
||||
|
||||
final boolean recordFinished = (r.terminalCount == r.receivers.size());
|
||||
if (recordFinished) {
|
||||
|
||||
@@ -220,6 +220,8 @@ final class BroadcastRecord extends Binder {
|
||||
|
||||
boolean mIsReceiverAppRunning; // Was the receiver's app already running.
|
||||
|
||||
boolean mWasReceiverAppStopped; // Was the receiver app stopped prior to starting
|
||||
|
||||
// Private refcount-management bookkeeping; start > 0
|
||||
static AtomicInteger sNextToken = new AtomicInteger(1);
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ import static com.android.internal.util.FrameworkStatsLog.GET_TYPE_ACCESSED_WITH
|
||||
import static com.android.internal.util.FrameworkStatsLog.GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__AM_ERROR;
|
||||
import static com.android.internal.util.FrameworkStatsLog.GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__AM_FRAMEWORK_PERMISSION;
|
||||
import static com.android.internal.util.FrameworkStatsLog.PROVIDER_ACQUISITION_EVENT_REPORTED;
|
||||
import static com.android.internal.util.FrameworkStatsLog.PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
import static com.android.internal.util.FrameworkStatsLog.PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED;
|
||||
import static com.android.internal.util.FrameworkStatsLog.PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD;
|
||||
import static com.android.internal.util.FrameworkStatsLog.PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM;
|
||||
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_MU;
|
||||
@@ -262,7 +264,8 @@ public class ContentProviderHelper {
|
||||
FrameworkStatsLog.write(
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED,
|
||||
r.uid, callingUid,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM);
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL);
|
||||
return holder;
|
||||
}
|
||||
|
||||
@@ -332,7 +335,8 @@ public class ContentProviderHelper {
|
||||
FrameworkStatsLog.write(
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED,
|
||||
cpr.proc.uid, callingUid,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM);
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(origId);
|
||||
@@ -508,8 +512,13 @@ public class ContentProviderHelper {
|
||||
FrameworkStatsLog.write(
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED,
|
||||
proc.uid, callingUid,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM);
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_WARM,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL);
|
||||
} else {
|
||||
final int packageState =
|
||||
((cpr.appInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0)
|
||||
? PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: PROVIDER_ACQUISITION_EVENT_REPORTED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
checkTime(startTime, "getContentProviderImpl: before start process");
|
||||
proc = mService.startProcessLocked(
|
||||
cpi.processName, cpr.appInfo, false, 0,
|
||||
@@ -528,7 +537,8 @@ public class ContentProviderHelper {
|
||||
FrameworkStatsLog.write(
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED,
|
||||
proc.uid, callingUid,
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD);
|
||||
PROVIDER_ACQUISITION_EVENT_REPORTED__PROC_START_TYPE__PROCESS_START_TYPE_COLD,
|
||||
packageState);
|
||||
}
|
||||
cpr.launchingApp = proc;
|
||||
mLaunchingProviders.add(cpr);
|
||||
|
||||
@@ -63,6 +63,8 @@ import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANG
|
||||
import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__LETTERBOXED_FOR_SIZE_COMPAT_MODE;
|
||||
import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_LETTERBOXED;
|
||||
import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__STATE__NOT_VISIBLE;
|
||||
import static com.android.internal.util.FrameworkStatsLog.APP_START_OCCURRED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
import static com.android.internal.util.FrameworkStatsLog.APP_START_OCCURRED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED;
|
||||
import static com.android.internal.util.FrameworkStatsLog.CAMERA_COMPAT_CONTROL_EVENT_REPORTED__EVENT__APPEARED_APPLY_TREATMENT;
|
||||
import static com.android.internal.util.FrameworkStatsLog.CAMERA_COMPAT_CONTROL_EVENT_REPORTED__EVENT__APPEARED_REVERT_TREATMENT;
|
||||
import static com.android.internal.util.FrameworkStatsLog.CAMERA_COMPAT_CONTROL_EVENT_REPORTED__EVENT__CLICKED_APPLY_TREATMENT;
|
||||
@@ -1092,6 +1094,10 @@ class ActivityMetricsLogger {
|
||||
isIncremental = true;
|
||||
isLoading = isIncrementalLoading(info.packageName, info.userId);
|
||||
}
|
||||
final boolean stopped = (info.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0;
|
||||
final int packageState = stopped
|
||||
? APP_START_OCCURRED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_STOPPED
|
||||
: APP_START_OCCURRED__PACKAGE_STOPPED_STATE__PACKAGE_STATE_NORMAL;
|
||||
FrameworkStatsLog.write(
|
||||
FrameworkStatsLog.APP_START_OCCURRED,
|
||||
info.applicationInfo.uid,
|
||||
@@ -1117,7 +1123,8 @@ class ActivityMetricsLogger {
|
||||
info.launchedActivityName.hashCode(),
|
||||
TimeUnit.NANOSECONDS.toMillis(info.timestampNs),
|
||||
processState,
|
||||
processOomAdj);
|
||||
processOomAdj,
|
||||
packageState);
|
||||
|
||||
if (DEBUG_METRICS) {
|
||||
Slog.i(TAG, String.format("APP_START_OCCURRED(%s, %s, %s, %s, %s)",
|
||||
|
||||
Reference in New Issue
Block a user