diff options
| author | 2020-03-11 02:22:33 +0000 | |
|---|---|---|
| committer | 2020-03-11 02:22:33 +0000 | |
| commit | 3e55a73519f883f52f9297fcf82fc12b8b7e6a7d (patch) | |
| tree | 378ef0368d94870ba11580d8c023807fbdf53ed9 | |
| parent | 239de5e08926448039d7087135b8e368f2466894 (diff) | |
| parent | 06a3e2ca4d5ef65b894ab9b21e92953fa465014c (diff) | |
Merge "freezer: don't allocate stats on unfreeze" into rvc-dev
| -rw-r--r-- | services/core/java/com/android/server/am/CachedAppOptimizer.java | 63 |
1 files changed, 22 insertions, 41 deletions
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java index 3a6065e18ea5..86d9028f53dc 100644 --- a/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java @@ -121,6 +121,7 @@ public final class CachedAppOptimizer { static final int COMPACT_PROCESS_MSG = 1; static final int COMPACT_SYSTEM_MSG = 2; static final int SET_FROZEN_PROCESS_MSG = 3; + static final int REPORT_UNFREEZE_MSG = 4; //TODO:change this static definition into a configurable flag. static final int FREEZE_TIMEOUT_MS = 500; @@ -613,30 +614,6 @@ public final class CachedAppOptimizer { FREEZE_TIMEOUT_MS); } - private final class UnfreezeStats { - final int mPid; - final String mName; - final long mFrozenDuration; - - UnfreezeStats(int pid, String name, long frozenDuration) { - mPid = pid; - mName = name; - mFrozenDuration = frozenDuration; - } - - public int getPid() { - return mPid; - } - - public String getName() { - return mName; - } - - public long getFrozenDuration() { - return mFrozenDuration; - } - } - @GuardedBy("mAm") void unfreezeAppLocked(ProcessRecord app) { mFreezeHandler.removeMessages(SET_FROZEN_PROCESS_MSG, app); @@ -667,12 +644,11 @@ public final class CachedAppOptimizer { Slog.d(TAG_AM, "sync unfroze " + app.pid + " " + app.processName); } - UnfreezeStats stats = new UnfreezeStats(app.pid, app.processName, - app.freezeUnfreezeTime - freezeTime); - mFreezeHandler.sendMessage( - mFreezeHandler.obtainMessage(SET_FROZEN_PROCESS_MSG, REPORT_UNFREEZE, 0, - stats)); + mFreezeHandler.obtainMessage(REPORT_UNFREEZE_MSG, + app.pid, + (int) Math.min(app.freezeUnfreezeTime - freezeTime, Integer.MAX_VALUE), + app.processName)); } } @@ -945,14 +921,19 @@ public final class CachedAppOptimizer { @Override public void handleMessage(Message msg) { - if (msg.what != SET_FROZEN_PROCESS_MSG) { - return; - } + switch (msg.what) { + case SET_FROZEN_PROCESS_MSG: + freezeProcess((ProcessRecord) msg.obj); + break; + case REPORT_UNFREEZE_MSG: + int pid = msg.arg1; + int frozenDuration = msg.arg2; + String processName = (String) msg.obj; - if (msg.arg1 == DO_FREEZE) { - freezeProcess((ProcessRecord) msg.obj); - } else if (msg.arg1 == REPORT_UNFREEZE) { - reportUnfreeze((UnfreezeStats) msg.obj); + reportUnfreeze(pid, frozenDuration, processName); + break; + default: + return; } } @@ -1015,18 +996,18 @@ public final class CachedAppOptimizer { } } - private void reportUnfreeze(UnfreezeStats stats) { + private void reportUnfreeze(int pid, int frozenDuration, String processName) { - EventLog.writeEvent(EventLogTags.AM_UNFREEZE, stats.getPid(), stats.getName()); + EventLog.writeEvent(EventLogTags.AM_UNFREEZE, pid, processName); // See above for why we're not taking mPhenotypeFlagLock here if (mRandom.nextFloat() < mFreezerStatsdSampleRate) { FrameworkStatsLog.write( FrameworkStatsLog.APP_FREEZE_CHANGED, FrameworkStatsLog.APP_FREEZE_CHANGED__ACTION__UNFREEZE_APP, - stats.getPid(), - stats.getName(), - stats.getFrozenDuration()); + pid, + processName, + frozenDuration); } } } |