Loading services/core/java/com/android/server/am/OomAdjuster.java +4 −0 Original line number Diff line number Diff line Loading @@ -3035,6 +3035,10 @@ public final class OomAdjuster { return; } if (app.mOptRecord.isFreezeExempt()) { return; } final ProcessCachedOptimizerRecord opt = app.mOptRecord; // if an app is already frozen and shouldNotFreeze becomes true, immediately unfreeze if (opt.isFrozen() && opt.shouldNotFreeze()) { Loading services/core/java/com/android/server/am/ProcessCachedOptimizerRecord.java +17 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,12 @@ final class ProcessCachedOptimizerRecord { @GuardedBy("mProcLock") private boolean mShouldNotFreeze; /** * Exempt from freezer (now for system apps with INSTALL_PACKAGES permission) */ @GuardedBy("mProcLock") private boolean mFreezeExempt; @GuardedBy("mProcLock") long getLastCompactTime() { return mLastCompactTime; Loading Loading @@ -160,6 +166,16 @@ final class ProcessCachedOptimizerRecord { mShouldNotFreeze = shouldNotFreeze; } @GuardedBy("mProcLock") boolean isFreezeExempt() { return mFreezeExempt; } @GuardedBy("mPreLock") void setFreezeExempt(boolean exempt) { mFreezeExempt = exempt; } ProcessCachedOptimizerRecord(ProcessRecord app) { mApp = app; mProcLock = app.mService.mProcLock; Loading @@ -173,6 +189,7 @@ final class ProcessCachedOptimizerRecord { void dump(PrintWriter pw, String prefix, long nowUptime) { pw.print(prefix); pw.print("lastCompactTime="); pw.print(mLastCompactTime); pw.print(" lastCompactAction="); pw.println(mLastCompactAction); pw.print(prefix); pw.print("isFreezeExempt="); pw.print(mFreezeExempt); pw.print(" " + IS_FROZEN + "="); pw.println(mFrozen); } } services/core/java/com/android/server/am/ProcessList.java +9 −1 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import static com.android.server.am.ActivityManagerService.TAG_NETWORK; import static com.android.server.am.ActivityManagerService.TAG_PROCESSES; import static com.android.server.am.ActivityManagerService.TAG_UID_OBSERVERS; import android.Manifest; import android.annotation.NonNull; import android.app.ActivityManager; import android.app.ActivityManager.ProcessCapability; Loading @@ -76,6 +77,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.res.Resources; import android.graphics.Point; Loading Loading @@ -1773,9 +1775,9 @@ public final class ProcessList { mService.updateCpuStats(); checkSlow(startTime, "startProcess: done updating cpu stats"); try { try { final int userId = UserHandle.getUserId(app.uid); try { AppGlobals.getPackageManager().checkPackageStartable(app.info.packageName, userId); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); Loading @@ -1798,6 +1800,12 @@ public final class ProcessList { app.info.packageName); externalStorageAccess = storageManagerInternal.hasExternalStorageAccess(uid, app.info.packageName); if (pm.checkPermission(Manifest.permission.INSTALL_PACKAGES, app.info.packageName, userId) == PackageManager.PERMISSION_GRANTED) { Slog.i(TAG, app.info.packageName + " is exempt from freezer"); app.mOptRecord.setFreezeExempt(true); } } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } Loading services/core/java/com/android/server/am/CachedAppOptimizer.java +1 −1 File changed.Contains only whitespace changes. Show changes Loading
services/core/java/com/android/server/am/OomAdjuster.java +4 −0 Original line number Diff line number Diff line Loading @@ -3035,6 +3035,10 @@ public final class OomAdjuster { return; } if (app.mOptRecord.isFreezeExempt()) { return; } final ProcessCachedOptimizerRecord opt = app.mOptRecord; // if an app is already frozen and shouldNotFreeze becomes true, immediately unfreeze if (opt.isFrozen() && opt.shouldNotFreeze()) { Loading
services/core/java/com/android/server/am/ProcessCachedOptimizerRecord.java +17 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,12 @@ final class ProcessCachedOptimizerRecord { @GuardedBy("mProcLock") private boolean mShouldNotFreeze; /** * Exempt from freezer (now for system apps with INSTALL_PACKAGES permission) */ @GuardedBy("mProcLock") private boolean mFreezeExempt; @GuardedBy("mProcLock") long getLastCompactTime() { return mLastCompactTime; Loading Loading @@ -160,6 +166,16 @@ final class ProcessCachedOptimizerRecord { mShouldNotFreeze = shouldNotFreeze; } @GuardedBy("mProcLock") boolean isFreezeExempt() { return mFreezeExempt; } @GuardedBy("mPreLock") void setFreezeExempt(boolean exempt) { mFreezeExempt = exempt; } ProcessCachedOptimizerRecord(ProcessRecord app) { mApp = app; mProcLock = app.mService.mProcLock; Loading @@ -173,6 +189,7 @@ final class ProcessCachedOptimizerRecord { void dump(PrintWriter pw, String prefix, long nowUptime) { pw.print(prefix); pw.print("lastCompactTime="); pw.print(mLastCompactTime); pw.print(" lastCompactAction="); pw.println(mLastCompactAction); pw.print(prefix); pw.print("isFreezeExempt="); pw.print(mFreezeExempt); pw.print(" " + IS_FROZEN + "="); pw.println(mFrozen); } }
services/core/java/com/android/server/am/ProcessList.java +9 −1 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import static com.android.server.am.ActivityManagerService.TAG_NETWORK; import static com.android.server.am.ActivityManagerService.TAG_PROCESSES; import static com.android.server.am.ActivityManagerService.TAG_UID_OBSERVERS; import android.Manifest; import android.annotation.NonNull; import android.app.ActivityManager; import android.app.ActivityManager.ProcessCapability; Loading @@ -76,6 +77,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.res.Resources; import android.graphics.Point; Loading Loading @@ -1773,9 +1775,9 @@ public final class ProcessList { mService.updateCpuStats(); checkSlow(startTime, "startProcess: done updating cpu stats"); try { try { final int userId = UserHandle.getUserId(app.uid); try { AppGlobals.getPackageManager().checkPackageStartable(app.info.packageName, userId); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); Loading @@ -1798,6 +1800,12 @@ public final class ProcessList { app.info.packageName); externalStorageAccess = storageManagerInternal.hasExternalStorageAccess(uid, app.info.packageName); if (pm.checkPermission(Manifest.permission.INSTALL_PACKAGES, app.info.packageName, userId) == PackageManager.PERMISSION_GRANTED) { Slog.i(TAG, app.info.packageName + " is exempt from freezer"); app.mOptRecord.setFreezeExempt(true); } } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } Loading
services/core/java/com/android/server/am/CachedAppOptimizer.java +1 −1 File changed.Contains only whitespace changes. Show changes