diff options
6 files changed, 120 insertions, 123 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java index ae4006d327a1..fd4974e61d06 100644 --- a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java +++ b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java @@ -30,10 +30,10 @@ class ActivityManagerDebugConfig { // will be tagged with their class names instead fot the generic tag. static final boolean TAG_WITH_CLASS_NAME = false; - // While debugging it is sometimes useful to have the category name of the log prepended to the + // While debugging it is sometimes useful to have the category name of the log appended to the // base log tag to make sifting through logs with the same base tag easier. By setting this - // constant to true, the category name of the log point will be prepended to the log tag. - static final boolean PREPEND_CATEGORY_NAME = false; + // constant to true, the category name of the log point will be appended to the log tag. + static final boolean APPEND_CATEGORY_NAME = false; // Default log tag for the activity manager package. static final String TAG_AM = "ActivityManager"; @@ -74,12 +74,17 @@ class ActivityManagerDebugConfig { static final boolean DEBUG_USER_LEAVING = DEBUG_ALL || false; static final boolean DEBUG_VISBILITY = DEBUG_ALL || false; - static final String POSTFIX_BACKUP = (PREPEND_CATEGORY_NAME) ? "_Backup" : ""; - static final String POSTFIX_BROADCAST = (PREPEND_CATEGORY_NAME) ? "_Broadcast" : ""; - static final String POSTFIX_CLEANUP = (PREPEND_CATEGORY_NAME) ? "_Cleanup" : ""; + static final String POSTFIX_BACKUP = (APPEND_CATEGORY_NAME) ? "_Backup" : ""; + static final String POSTFIX_BROADCAST = (APPEND_CATEGORY_NAME) ? "_Broadcast" : ""; + static final String POSTFIX_CLEANUP = (APPEND_CATEGORY_NAME) ? "_Cleanup" : ""; + static final String POSTFIX_CONFIGURATION = (APPEND_CATEGORY_NAME) ? "_Configuration" : ""; + static final String POSTFIX_FOCUS = (APPEND_CATEGORY_NAME) ? "_Focus" : ""; + static final String POSTFIX_IMMERSIVE = (APPEND_CATEGORY_NAME) ? "_Immersive" : ""; + static final String POSTFIX_LRU = (APPEND_CATEGORY_NAME) ? "_LRU" : ""; static final String POSTFIX_MU = "_MU"; - static final String POSTFIX_SERVICE = (PREPEND_CATEGORY_NAME) ? "_Service" : ""; + static final String POSTFIX_OOM_ADJ = (APPEND_CATEGORY_NAME) ? "_OomAdj" : ""; + static final String POSTFIX_SERVICE = (APPEND_CATEGORY_NAME) ? "_Service" : ""; static final String POSTFIX_SERVICE_EXECUTING = - (PREPEND_CATEGORY_NAME) ? "_ServiceExecuting" : ""; + (APPEND_CATEGORY_NAME) ? "_ServiceExecuting" : ""; } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8f9ce51e0348..dcee96a1618d 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -254,15 +254,14 @@ public final class ActivityManagerService extends ActivityManagerNative private static final String TAG_BACKUP = TAG + POSTFIX_BACKUP; private static final String TAG_BROADCAST = TAG + POSTFIX_BROADCAST; private static final String TAG_CLEANUP = TAG + POSTFIX_CLEANUP; + private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; + private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS; + private static final String TAG_IMMERSIVE = TAG + POSTFIX_IMMERSIVE; + private static final String TAG_LRU = TAG + POSTFIX_LRU; private static final String TAG_MU = TAG + POSTFIX_MU; + private static final String TAG_OOM_ADJ = TAG + POSTFIX_OOM_ADJ; // TODO(ogunwale): Migrate all the constants below to use ActivityManagerDebugConfig class. - static final boolean DEBUG_CONFIGURATION = DEBUG_ALL || false; - static final boolean DEBUG_FOCUS = false; - static final boolean DEBUG_IMMERSIVE = DEBUG_ALL || false; - static final boolean DEBUG_MU = DEBUG_ALL || false; - static final boolean DEBUG_OOM_ADJ = DEBUG_ALL || false; - static final boolean DEBUG_LRU = DEBUG_ALL || false; static final boolean DEBUG_PAUSE = DEBUG_ALL || false; static final boolean DEBUG_POWER = DEBUG_ALL || false; static final boolean DEBUG_POWER_QUICK = DEBUG_POWER || false; @@ -283,8 +282,6 @@ public final class ActivityManagerService extends ActivityManagerNative static final boolean DEBUG_PSS = DEBUG_ALL || false; static final boolean DEBUG_LOCKSCREEN = DEBUG_ALL || false; static final boolean DEBUG_RECENTS = DEBUG_ALL || false; - static final boolean VALIDATE_TOKENS = false; - static final boolean SHOW_ACTIVITY_START_TIME = true; // Control over CPU and battery monitoring. static final long BATTERY_STATS_TIME = 30*60*1000; // write battery stats every 30 minutes. @@ -1705,10 +1702,9 @@ public final class ActivityManagerService extends ActivityManagerNative case IMMERSIVE_MODE_LOCK_MSG: { final boolean nextState = (msg.arg1 != 0); if (mUpdateLock.isHeld() != nextState) { - if (DEBUG_IMMERSIVE) { - final ActivityRecord r = (ActivityRecord) msg.obj; - Slog.d(TAG, "Applying new update lock state '" + nextState + "' for " + r); - } + if (DEBUG_IMMERSIVE) Slog.d(TAG_IMMERSIVE, + "Applying new update lock state '" + nextState + + "' for " + (ActivityRecord)msg.obj); if (nextState) { mUpdateLock.acquire(); } else { @@ -2481,7 +2477,7 @@ public final class ActivityManagerService extends ActivityManagerNative final void setFocusedActivityLocked(ActivityRecord r, String reason) { if (r != null && mFocusedActivity != r) { - if (DEBUG_FOCUS) Slog.d(TAG, "setFocusedActivityLocked: r=" + r); + if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedActivityLocked: r=" + r); mFocusedActivity = r; if (r.task != null && r.task.voiceInteractor != null) { startRunningVoiceLocked(r.task.voiceSession, r.info.applicationInfo.uid); @@ -2505,7 +2501,7 @@ public final class ActivityManagerService extends ActivityManagerNative @Override public void setFocusedStack(int stackId) { - if (DEBUG_FOCUS) Slog.d(TAG, "setFocusedStack: stackId=" + stackId); + if (DEBUG_FOCUS) Slog.d(TAG_FOCUS, "setFocusedStack: stackId=" + stackId); synchronized (ActivityManagerService.this) { ActivityStack stack = mStackSupervisor.getStack(stackId); if (stack != null) { @@ -2587,7 +2583,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (index > 0) { index--; } - if (DEBUG_LRU) Slog.d(TAG, "Moving dep from " + lrui + " to " + index + if (DEBUG_LRU) Slog.d(TAG_LRU, "Moving dep from " + lrui + " to " + index + " in LRU list: " + app); mLruProcesses.add(index, app); return index; @@ -2633,13 +2629,13 @@ public final class ActivityManagerService extends ActivityManagerNative if (hasActivity) { final int N = mLruProcesses.size(); if (N > 0 && mLruProcesses.get(N-1) == app) { - if (DEBUG_LRU) Slog.d(TAG, "Not moving, already top activity: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Not moving, already top activity: " + app); return; } } else { if (mLruProcessServiceStart > 0 && mLruProcesses.get(mLruProcessServiceStart-1) == app) { - if (DEBUG_LRU) Slog.d(TAG, "Not moving, already top other: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Not moving, already top other: " + app); return; } } @@ -2649,7 +2645,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.persistent && lrui >= 0) { // We don't care about the position of persistent processes, as long as // they are in the list. - if (DEBUG_LRU) Slog.d(TAG, "Not moving, persistent: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Not moving, persistent: " + app); return; } @@ -2718,27 +2714,29 @@ public final class ActivityManagerService extends ActivityManagerNative int nextIndex; if (hasActivity) { final int N = mLruProcesses.size(); - if (app.activities.size() == 0 && mLruProcessActivityStart < (N-1)) { + if (app.activities.size() == 0 && mLruProcessActivityStart < (N - 1)) { // Process doesn't have activities, but has clients with // activities... move it up, but one below the top (the top // should always have a real activity). - if (DEBUG_LRU) Slog.d(TAG, "Adding to second-top of LRU activity list: " + app); - mLruProcesses.add(N-1, app); + if (DEBUG_LRU) Slog.d(TAG_LRU, + "Adding to second-top of LRU activity list: " + app); + mLruProcesses.add(N - 1, app); // To keep it from spamming the LRU list (by making a bunch of clients), // we will push down any other entries owned by the app. final int uid = app.info.uid; - for (int i=N-2; i>mLruProcessActivityStart; i--) { + for (int i = N - 2; i > mLruProcessActivityStart; i--) { ProcessRecord subProc = mLruProcesses.get(i); if (subProc.info.uid == uid) { // We want to push this one down the list. If the process after // it is for the same uid, however, don't do so, because we don't // want them internally to be re-ordered. - if (mLruProcesses.get(i-1).info.uid != uid) { - if (DEBUG_LRU) Slog.d(TAG, "Pushing uid " + uid + " swapping at " + i - + ": " + mLruProcesses.get(i) + " : " + mLruProcesses.get(i-1)); + if (mLruProcesses.get(i - 1).info.uid != uid) { + if (DEBUG_LRU) Slog.d(TAG_LRU, + "Pushing uid " + uid + " swapping at " + i + ": " + + mLruProcesses.get(i) + " : " + mLruProcesses.get(i - 1)); ProcessRecord tmp = mLruProcesses.get(i); - mLruProcesses.set(i, mLruProcesses.get(i-1)); - mLruProcesses.set(i-1, tmp); + mLruProcesses.set(i, mLruProcesses.get(i - 1)); + mLruProcesses.set(i - 1, tmp); i--; } } else { @@ -2748,13 +2746,13 @@ public final class ActivityManagerService extends ActivityManagerNative } } else { // Process has activities, put it at the very tipsy-top. - if (DEBUG_LRU) Slog.d(TAG, "Adding to top of LRU activity list: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Adding to top of LRU activity list: " + app); mLruProcesses.add(app); } nextIndex = mLruProcessServiceStart; } else if (hasService) { // Process has services, put it at the top of the service list. - if (DEBUG_LRU) Slog.d(TAG, "Adding to top of LRU service list: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Adding to top of LRU service list: " + app); mLruProcesses.add(mLruProcessActivityStart, app); nextIndex = mLruProcessServiceStart; mLruProcessActivityStart++; @@ -2765,7 +2763,7 @@ public final class ActivityManagerService extends ActivityManagerNative // If there is a client, don't allow the process to be moved up higher // in the list than that client. int clientIndex = mLruProcesses.lastIndexOf(client); - if (DEBUG_LRU && clientIndex < 0) Slog.d(TAG, "Unknown client " + client + if (DEBUG_LRU && clientIndex < 0) Slog.d(TAG_LRU, "Unknown client " + client + " when updating " + app); if (clientIndex <= lrui) { // Don't allow the client index restriction to push it down farther in the @@ -2776,7 +2774,7 @@ public final class ActivityManagerService extends ActivityManagerNative index = clientIndex; } } - if (DEBUG_LRU) Slog.d(TAG, "Adding at " + index + " of LRU list: " + app); + if (DEBUG_LRU) Slog.d(TAG_LRU, "Adding at " + index + " of LRU list: " + app); mLruProcesses.add(index, app); nextIndex = index-1; mLruProcessActivityStart++; @@ -5599,7 +5597,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.instrumentationClass != null) { ensurePackageDexOpt(app.instrumentationClass.getPackageName()); } - if (DEBUG_CONFIGURATION) Slog.v(TAG, "Binding proc " + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Binding proc " + processName + " with config " + mConfiguration); ApplicationInfo appInfo = app.instrumentationInfo != null ? app.instrumentationInfo : app.info; @@ -6137,8 +6135,7 @@ public final class ActivityManagerService extends ActivityManagerNative int callingUid, int userId, IBinder token, String resultWho, int requestCode, Intent[] intents, String[] resolvedTypes, int flags, Bundle options) { - if (DEBUG_MU) - Slog.v(TAG_MU, "getIntentSenderLocked(): uid=" + callingUid); + if (DEBUG_MU) Slog.v(TAG_MU, "getIntentSenderLocked(): uid=" + callingUid); ActivityRecord activity = null; if (type == ActivityManager.INTENT_SENDER_ACTIVITY_RESULT) { activity = ActivityRecord.isInStackLocked(token); @@ -8616,8 +8613,8 @@ public final class ActivityManagerService extends ActivityManagerNative STOCK_PM_FLAGS | PackageManager.GET_URI_PERMISSION_PATTERNS); } catch (RemoteException ex) { } - if (DEBUG_MU) - Slog.v(TAG_MU, "generateApplicationProvidersLocked, app.info.uid = " + app.uid); + if (DEBUG_MU) Slog.v(TAG_MU, + "generateApplicationProvidersLocked, app.info.uid = " + app.uid); int userId = app.userId; if (providers != null) { int N = providers.size(); @@ -8644,8 +8641,8 @@ public final class ActivityManagerService extends ActivityManagerNative cpr = new ContentProviderRecord(this, cpi, app.info, comp, singleton); mProviderMap.putProviderByClass(comp, cpr); } - if (DEBUG_MU) - Slog.v(TAG_MU, "generateApplicationProvidersLocked, cpi.uid = " + cpr.uid); + if (DEBUG_MU) Slog.v(TAG_MU, + "generateApplicationProvidersLocked, cpi.uid = " + cpr.uid); app.pubProviders.put(cpi.name, cpr); if (!cpi.multiprocess || !"android".equals(cpi.packageName)) { // Don't add this if it is a platform component that is marked @@ -9174,10 +9171,9 @@ public final class ActivityManagerService extends ActivityManagerNative return null; } try { - if (DEBUG_MU) { - Slog.v(TAG_MU, "Waiting to start provider " + cpr + " launchingApp=" - + cpr.launchingApp); - } + if (DEBUG_MU) Slog.v(TAG_MU, + "Waiting to start provider " + cpr + + " launchingApp=" + cpr.launchingApp); if (conn != null) { conn.waiting = true; } @@ -9299,8 +9295,7 @@ public final class ActivityManagerService extends ActivityManagerNative enforceNotIsolatedCaller("publishContentProviders"); synchronized (this) { final ProcessRecord r = getRecordForAppLocked(caller); - if (DEBUG_MU) - Slog.v(TAG_MU, "ProcessRecord uid = " + r.uid); + if (DEBUG_MU) Slog.v(TAG_MU, "ProcessRecord uid = " + r.uid); if (r == null) { throw new SecurityException( "Unable to find app for caller " + caller @@ -9317,8 +9312,7 @@ public final class ActivityManagerService extends ActivityManagerNative continue; } ContentProviderRecord dst = r.pubProviders.get(src.info.name); - if (DEBUG_MU) - Slog.v(TAG_MU, "ContentProviderRecord uid = " + dst.uid); + if (DEBUG_MU) Slog.v(TAG_MU, "ContentProviderRecord uid = " + dst.uid); if (dst != null) { ComponentName comp = new ComponentName(dst.info.packageName, dst.info.name); mProviderMap.putProviderByClass(comp, dst); @@ -10400,9 +10394,7 @@ public final class ActivityManagerService extends ActivityManagerNative // update associated state if we're frontmost if (r == mFocusedActivity) { - if (DEBUG_IMMERSIVE) { - Slog.d(TAG, "Frontmost changed immersion: "+ r); - } + if (DEBUG_IMMERSIVE) Slog.d(TAG_IMMERSIVE, "Frontmost changed immersion: "+ r); applyUpdateLockStateLocked(r); } } @@ -10751,7 +10743,8 @@ public final class ActivityManagerService extends ActivityManagerNative // This happens before any activities are started, so we can // change mConfiguration in-place. updateConfigurationLocked(configuration, null, false, true); - if (DEBUG_CONFIGURATION) Slog.v(TAG, "Initial config: " + mConfiguration); + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, + "Initial config: " + mConfiguration); } } @@ -15094,10 +15087,9 @@ public final class ActivityManagerService extends ActivityManagerNative result = UserHandle.isSameApp(aInfo.uid, Process.PHONE_UID) || (aInfo.flags & ApplicationInfo.FLAG_PERSISTENT) != 0; } - if (DEBUG_MU) { - Slog.v(TAG, "isSingleton(" + componentProcessName + ", " + aInfo - + ", " + className + ", 0x" + Integer.toHexString(flags) + ") = " + result); - } + if (DEBUG_MU) Slog.v(TAG_MU, + "isSingleton(" + componentProcessName + ", " + aInfo + ", " + className + ", 0x" + + Integer.toHexString(flags) + ") = " + result); return result; } @@ -16484,9 +16476,8 @@ public final class ActivityManagerService extends ActivityManagerNative Configuration newConfig = new Configuration(mConfiguration); changes = newConfig.updateFrom(values); if (changes != 0) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) { - Slog.i(TAG, "Updating configuration to: " + values); - } + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.i(TAG_CONFIGURATION, + "Updating configuration to: " + values); EventLog.writeEvent(EventLogTags.CONFIGURATION_CHANGED, changes); @@ -16537,7 +16528,7 @@ public final class ActivityManagerService extends ActivityManagerNative ProcessRecord app = mLruProcesses.get(i); try { if (app.thread != null) { - if (DEBUG_CONFIGURATION) Slog.v(TAG, "Sending to proc " + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Sending to proc " + app.processName + " new config " + mConfiguration); app.thread.scheduleConfigurationChanged(configCopy); } @@ -17740,15 +17731,15 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.curAdj != app.setAdj) { ProcessList.setOomAdj(app.pid, app.info.uid, app.curAdj); - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v( - TAG, "Set " + app.pid + " " + app.processName + - " adj " + app.curAdj + ": " + app.adjType); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, + "Set " + app.pid + " " + app.processName + " adj " + app.curAdj + ": " + + app.adjType); app.setAdj = app.curAdj; } if (app.setSchedGroup != app.curSchedGroup) { app.setSchedGroup = app.curSchedGroup; - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Setting process group of " + app.processName + " to " + app.curSchedGroup); if (app.waitingToKill != null && @@ -17832,7 +17823,7 @@ public final class ActivityManagerService extends ActivityManagerNative } } if (app.setProcState != app.curProcState) { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Proc state change of " + app.processName + " to " + app.curProcState); boolean setImportant = app.setProcState < ActivityManager.PROCESS_STATE_SERVICE; @@ -18097,7 +18088,7 @@ public final class ActivityManagerService extends ActivityManagerNative // step that cached level. app.curRawAdj = curCachedAdj; app.curAdj = app.modifyRawOomAdj(curCachedAdj); - if (DEBUG_LRU && false) Slog.d(TAG, "Assigning activity LRU #" + i + if (DEBUG_LRU && false) Slog.d(TAG_LRU, "Assigning activity LRU #" + i + " adj: " + app.curAdj + " (curCachedAdj=" + curCachedAdj + ")"); if (curCachedAdj != nextCachedAdj) { @@ -18120,7 +18111,7 @@ public final class ActivityManagerService extends ActivityManagerNative // state is still as a service), which is what we want. app.curRawAdj = curEmptyAdj; app.curAdj = app.modifyRawOomAdj(curEmptyAdj); - if (DEBUG_LRU && false) Slog.d(TAG, "Assigning empty LRU #" + i + if (DEBUG_LRU && false) Slog.d(TAG_LRU, "Assigning empty LRU #" + i + " adj: " + app.curAdj + " (curEmptyAdj=" + curEmptyAdj + ")"); if (curEmptyAdj != nextEmptyAdj) { @@ -18210,13 +18201,13 @@ public final class ActivityManagerService extends ActivityManagerNative // We always allow the memory level to go up (better). We only allow it to go // down if we are in a state where that is allowed, *and* the total number of processes // has gone down since last time. - if (DEBUG_OOM_ADJ) Slog.d(TAG, "oom: memFactor=" + memFactor + " last=" + mLastMemoryLevel - + " allowLow=" + mAllowLowerMemLevel + " numProcs=" + mLruProcesses.size() - + " last=" + mLastNumProcesses); + if (DEBUG_OOM_ADJ) Slog.d(TAG_OOM_ADJ, "oom: memFactor=" + memFactor + + " last=" + mLastMemoryLevel + " allowLow=" + mAllowLowerMemLevel + + " numProcs=" + mLruProcesses.size() + " last=" + mLastNumProcesses); if (memFactor > mLastMemoryLevel) { if (!mAllowLowerMemLevel || mLruProcesses.size() >= mLastNumProcesses) { memFactor = mLastMemoryLevel; - if (DEBUG_OOM_ADJ) Slog.d(TAG, "Keeping last mem factor!"); + if (DEBUG_OOM_ADJ) Slog.d(TAG_OOM_ADJ, "Keeping last mem factor!"); } } mLastMemoryLevel = memFactor; @@ -18256,9 +18247,8 @@ public final class ActivityManagerService extends ActivityManagerNative && !app.killedByAm) { if (app.trimMemoryLevel < curLevel && app.thread != null) { try { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, - "Trimming memory of " + app.processName - + " to " + curLevel); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, + "Trimming memory of " + app.processName + " to " + curLevel); app.thread.scheduleTrimMemory(curLevel); } catch (RemoteException e) { } @@ -18293,7 +18283,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.trimMemoryLevel < ComponentCallbacks2.TRIM_MEMORY_BACKGROUND && app.thread != null) { try { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Trimming memory of heavy-weight " + app.processName + " to " + ComponentCallbacks2.TRIM_MEMORY_BACKGROUND); app.thread.scheduleTrimMemory( @@ -18311,7 +18301,7 @@ public final class ActivityManagerService extends ActivityManagerNative final int level = ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN; if (app.trimMemoryLevel < level && app.thread != null) { try { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Trimming memory of bg-ui " + app.processName + " to " + level); app.thread.scheduleTrimMemory(level); @@ -18322,7 +18312,7 @@ public final class ActivityManagerService extends ActivityManagerNative } if (app.trimMemoryLevel < fgTrimLevel && app.thread != null) { try { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Trimming memory of fg " + app.processName + " to " + fgTrimLevel); app.thread.scheduleTrimMemory(fgTrimLevel); @@ -18348,7 +18338,7 @@ public final class ActivityManagerService extends ActivityManagerNative if (app.trimMemoryLevel < ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN && app.thread != null) { try { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, "Trimming memory of ui hidden " + app.processName + " to " + ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN); app.thread.scheduleTrimMemory( @@ -18383,12 +18373,12 @@ public final class ActivityManagerService extends ActivityManagerNative } if (DEBUG_OOM_ADJ) { + final long duration = SystemClock.uptimeMillis() - now; if (false) { - RuntimeException here = new RuntimeException("here"); - here.fillInStackTrace(); - Slog.d(TAG, "Did OOM ADJ in " + (SystemClock.uptimeMillis()-now) + "ms", here); + Slog.d(TAG_OOM_ADJ, "Did OOM ADJ in " + duration + "ms", + new RuntimeException("here").fillInStackTrace()); } else { - Slog.d(TAG, "Did OOM ADJ in " + (SystemClock.uptimeMillis()-now) + "ms"); + Slog.d(TAG_OOM_ADJ, "Did OOM ADJ in " + duration + "ms"); } } } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index ca2721c561ff..d34b33be33e5 100755 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -76,6 +76,7 @@ import java.util.Objects; final class ActivityRecord { private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityRecord" : TAG_AM; + private static final boolean SHOW_ACTIVITY_START_TIME = true; static final boolean DEBUG_SAVED_STATE = ActivityStackSupervisor.DEBUG_SAVED_STATE; final public static String RECENTS_PACKAGE_NAME = "com.android.systemui.recents"; @@ -939,7 +940,7 @@ final class ActivityRecord { final long thisTime = curTime - fullyDrawnStartTime; final long totalTime = stack.mFullyDrawnStartTime != 0 ? (curTime - stack.mFullyDrawnStartTime) : thisTime; - if (ActivityManagerService.SHOW_ACTIVITY_START_TIME) { + if (SHOW_ACTIVITY_START_TIME) { Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "drawing", 0); EventLog.writeEvent(EventLogTags.AM_ACTIVITY_FULLY_DRAWN_TIME, userId, System.identityHashCode(this), shortComponentName, @@ -973,7 +974,7 @@ final class ActivityRecord { final long thisTime = curTime - displayStartTime; final long totalTime = stack.mLaunchStartTime != 0 ? (curTime - stack.mLaunchStartTime) : thisTime; - if (ActivityManagerService.SHOW_ACTIVITY_START_TIME) { + if (SHOW_ACTIVITY_START_TIME) { Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, "launching", 0); EventLog.writeEvent(EventLogTags.AM_ACTIVITY_LAUNCH_TIME, userId, System.identityHashCode(this), shortComponentName, diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 203c7249d687..4bb265deaced 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -17,7 +17,6 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.*; -import static com.android.server.am.ActivityManagerService.DEBUG_CONFIGURATION; import static com.android.server.am.ActivityManagerService.DEBUG_PAUSE; import static com.android.server.am.ActivityManagerService.DEBUG_RESULTS; import static com.android.server.am.ActivityManagerService.DEBUG_STACK; @@ -26,7 +25,6 @@ import static com.android.server.am.ActivityManagerService.DEBUG_TASKS; import static com.android.server.am.ActivityManagerService.DEBUG_TRANSITION; import static com.android.server.am.ActivityManagerService.DEBUG_USER_LEAVING; import static com.android.server.am.ActivityManagerService.DEBUG_VISBILITY; -import static com.android.server.am.ActivityManagerService.VALIDATE_TOKENS; import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; @@ -97,6 +95,9 @@ final class ActivityStack { private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStack" : TAG_AM; private static final String TAG_CLEANUP = TAG + POSTFIX_CLEANUP; + private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; + + private static final boolean VALIDATE_TOKENS = false; // Ticks during which we check progress while waiting for an app to launch. static final int LAUNCH_TICK = 500; @@ -3747,12 +3748,12 @@ final class ActivityStack { final boolean ensureActivityConfigurationLocked(ActivityRecord r, int globalChanges) { if (mConfigWillChange) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Skipping config check (will change): " + r); return true; } - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Ensuring correct configuration: " + r); // Make sure the current stack override configuration is supported by the top task @@ -3765,7 +3766,7 @@ final class ActivityStack { mWindowManager.forceStackToFullscreen(mStackId, !topTask.mResizeable); updateOverrideConfiguration(newOverrideConfig); mForcedFullscreen = !prevFullscreen && mFullscreen; - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Updated stack config to support task=" + topTask + " resizeable=" + topTask.mResizeable + " mForcedFullscreen=" + mForcedFullscreen @@ -3779,14 +3780,14 @@ final class ActivityStack { if (r.configuration == newConfig && r.stackConfigOverride == mOverrideConfig && !r.forceNewConfig) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration unchanged in " + r); return true; } // We don't worry about activities that are finishing. if (r.finishing) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter in finishing " + r); r.stopFreezingScreenLocked(false); return true; @@ -3820,7 +3821,7 @@ final class ActivityStack { } final int changes = oldConfig.diff(newConfig) | stackChanges; if (changes == 0 && !r.forceNewConfig) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration no differences in " + r); return true; } @@ -3828,7 +3829,7 @@ final class ActivityStack { // If the activity isn't currently running, just leave the new // configuration and it will pick that up next time it starts. if (r.app == null || r.app.thread == null) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Configuration doesn't matter not running " + r); r.stopFreezingScreenLocked(false); r.forceNewConfig = false; @@ -3836,26 +3837,25 @@ final class ActivityStack { } // Figure out how to handle the changes between the configurations. - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) { - Slog.v(TAG, "Checking to restart " + r.info.name + ": changed=0x" - + Integer.toHexString(changes) + ", handles=0x" - + Integer.toHexString(r.info.getRealConfigChanged()) - + ", newConfig=" + newConfig); - } + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, + "Checking to restart " + r.info.name + ": changed=0x" + + Integer.toHexString(changes) + ", handles=0x" + + Integer.toHexString(r.info.getRealConfigChanged()) + ", newConfig=" + newConfig); + if ((changes&(~r.info.getRealConfigChanged())) != 0 || r.forceNewConfig) { // Aha, the activity isn't handling the change, so DIE DIE DIE. r.configChangeFlags |= changes; r.startFreezingScreenLocked(r.app, globalChanges); r.forceNewConfig = false; if (r.app == null || r.app.thread == null) { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is destroying non-running " + r); destroyActivityLocked(r, true, "config"); } else if (r.state == ActivityState.PAUSING) { // A little annoying: we are waiting for this activity to // finish pausing. Let's not do anything now, but just // flag that it needs to be restarted when done pausing. - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is skipping already pausing " + r); r.configDestroy = true; return true; @@ -3864,12 +3864,12 @@ final class ActivityStack { // and we need to restart the top, resumed activity. // Instead of doing the normal handshaking, just say // "restart!". - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is relaunching resumed " + r); relaunchActivityLocked(r, r.configChangeFlags, true); r.configChangeFlags = 0; } else { - if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Config is relaunching non-resumed " + r); relaunchActivityLocked(r, r.configChangeFlags, false); r.configChangeFlags = 0; @@ -3886,7 +3886,7 @@ final class ActivityStack { // system level configuration it last got. if (r.app != null && r.app.thread != null) { try { - if (DEBUG_CONFIGURATION) Slog.v(TAG, "Sending new config to " + r); + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Sending new config to " + r); r.app.thread.scheduleActivityConfigurationChanged( r.appToken, new Configuration(mOverrideConfig)); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 471737ee3092..4bab4fd38004 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -23,8 +23,6 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_TASK_ON_HOME; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static com.android.server.am.ActivityManagerDebugConfig.*; -import static com.android.server.am.ActivityManagerService.DEBUG_CONFIGURATION; -import static com.android.server.am.ActivityManagerService.DEBUG_FOCUS; import static com.android.server.am.ActivityManagerService.DEBUG_PAUSE; import static com.android.server.am.ActivityManagerService.DEBUG_RECENTS; import static com.android.server.am.ActivityManagerService.DEBUG_RESULTS; @@ -119,6 +117,8 @@ import java.util.List; public final class ActivityStackSupervisor implements DisplayListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStackSupervisor" : TAG_AM; + private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; + private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS; static final boolean DEBUG = DEBUG_ALL || false; static final boolean DEBUG_ADD_REMOVE = DEBUG || false; @@ -917,7 +917,7 @@ public final class ActivityStackSupervisor implements DisplayListener { stack = container.mStack; } stack.mConfigWillChange = config != null && mService.mConfiguration.diff(config) != 0; - if (DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Starting activity when config will change = " + stack.mConfigWillChange); final long origId = Binder.clearCallingIdentity(); @@ -1007,7 +1007,7 @@ public final class ActivityStackSupervisor implements DisplayListener { mService.enforceCallingPermission(android.Manifest.permission.CHANGE_CONFIGURATION, "updateConfiguration()"); stack.mConfigWillChange = false; - if (DEBUG_CONFIGURATION) Slog.v(TAG, + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Updating to new configuration after starting activity."); mService.updateConfigurationLocked(config, null, false, false); } @@ -1584,10 +1584,11 @@ public final class ActivityStackSupervisor implements DisplayListener { stack = task.stack; if (stack.isOnHomeDisplay()) { if (mFocusedStack != stack) { - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "computeStackFocus: Setting " + - "focused stack to r=" + r + " task=" + task); + if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, + "computeStackFocus: Setting " + "focused stack to r=" + r + + " task=" + task); } else { - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, + if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: Focused stack already=" + mFocusedStack); } } @@ -1603,7 +1604,7 @@ public final class ActivityStackSupervisor implements DisplayListener { if (mFocusedStack != mHomeStack && (!newTask || mFocusedStack.mActivityContainer.isEligibleForNewTasks())) { - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, + if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: Have a focused stack=" + mFocusedStack); return mFocusedStack; } @@ -1612,7 +1613,7 @@ public final class ActivityStackSupervisor implements DisplayListener { for (int stackNdx = homeDisplayStacks.size() - 1; stackNdx >= 0; --stackNdx) { stack = homeDisplayStacks.get(stackNdx); if (!stack.isHomeStack()) { - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, + if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: Setting focused stack=" + stack); return stack; } @@ -1620,8 +1621,8 @@ public final class ActivityStackSupervisor implements DisplayListener { // Need to create an app stack for this user. stack = createStackOnDisplay(getNextStackId(), Display.DEFAULT_DISPLAY); - if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG, "computeStackFocus: New stack r=" + r + - " stackId=" + stack.mStackId); + if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: New stack r=" + + r + " stackId=" + stack.mStackId); return stack; } return mHomeStack; diff --git a/services/core/java/com/android/server/am/CompatModePackages.java b/services/core/java/com/android/server/am/CompatModePackages.java index ce63d75415f4..0fe9231b4504 100644 --- a/services/core/java/com/android/server/am/CompatModePackages.java +++ b/services/core/java/com/android/server/am/CompatModePackages.java @@ -46,7 +46,7 @@ import android.util.Xml; public final class CompatModePackages { private static final String TAG = TAG_WITH_CLASS_NAME ? "CompatModePackages" : TAG_AM; - private final boolean DEBUG_CONFIGURATION = ActivityManagerService.DEBUG_CONFIGURATION; + private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; private final ActivityManagerService mService; private final AtomicFile mFile; @@ -334,7 +334,7 @@ public final class CompatModePackages { } try { if (app.thread != null) { - if (DEBUG_CONFIGURATION) Slog.v(TAG, "Sending to proc " + if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, "Sending to proc " + app.processName + " new compat " + ci); app.thread.updatePackageCompatibilityInfo(packageName, ci); } |