diff options
| -rw-r--r-- | core/api/current.txt | 5 | ||||
| -rw-r--r-- | core/api/test-current.txt | 11 | ||||
| -rw-r--r-- | core/java/android/os/StrictMode.java | 28 | ||||
| -rw-r--r-- | core/java/android/os/strictmode/ExplicitGcViolation.java | 3 |
4 files changed, 21 insertions, 26 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 584c67f288c1..a85c69b6284c 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -32083,6 +32083,7 @@ package android.os { method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectCustomSlowCalls(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskReads(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectDiskWrites(); + method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectNetwork(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectResourceMismatches(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectUnbufferedIo(); @@ -32097,6 +32098,7 @@ package android.os { method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitCustomSlowCalls(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskReads(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitDiskWrites(); + method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitExplicitGc(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitNetwork(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitResourceMismatches(); method @NonNull public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo(); @@ -32650,6 +32652,9 @@ package android.os.strictmode { public final class DiskWriteViolation extends android.os.strictmode.Violation { } + public final class ExplicitGcViolation extends android.os.strictmode.Violation { + } + public final class FileUriExposedViolation extends android.os.strictmode.Violation { } diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 59aa48a12c1d..b59b9d05b642 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1813,10 +1813,6 @@ package android.os { method public static void setViolationLogger(android.os.StrictMode.ViolationLogger); } - public static final class StrictMode.ThreadPolicy.Builder { - method @NonNull public android.os.StrictMode.ThreadPolicy.Builder detectExplicitGc(); - } - public static final class StrictMode.ViolationInfo implements android.os.Parcelable { ctor public StrictMode.ViolationInfo(android.os.Parcel); ctor public StrictMode.ViolationInfo(android.os.Parcel, boolean); @@ -2052,13 +2048,6 @@ package android.os.storage { } -package android.os.strictmode { - - public final class ExplicitGcViolation extends android.os.strictmode.Violation { - } - -} - package android.os.vibrator { public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment { diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index 412a33a1c124..113a64048796 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -26,6 +26,9 @@ import android.annotation.TestApi; import android.app.ActivityManager; import android.app.ActivityThread; import android.app.IActivityManager; +import android.app.compat.CompatChanges; +import android.compat.annotation.ChangeId; +import android.compat.annotation.EnabledSince; import android.compat.annotation.UnsupportedAppUsage; import android.content.BroadcastReceiver; import android.content.Context; @@ -344,6 +347,13 @@ public final class StrictMode { public static final int NETWORK_POLICY_LOG = 1; /** {@hide} */ public static final int NETWORK_POLICY_REJECT = 2; + + /** + * Detect explicit calls to {@link Runtime#gc()}. + */ + @ChangeId + @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) + static final long DETECT_EXPLICIT_GC = 3400644L; // TODO: wrap in some ImmutableHashMap thing. // Note: must be before static initialization of sVmPolicy. @@ -496,6 +506,7 @@ public final class StrictMode { * <p>As of the Gingerbread release this includes network and disk operations but will * likely expand in future releases. */ + @SuppressWarnings("AndroidFrameworkCompatChange") public @NonNull Builder detectAll() { detectDiskReads(); detectDiskWrites(); @@ -511,6 +522,9 @@ public final class StrictMode { if (targetSdk >= Build.VERSION_CODES.O) { detectUnbufferedIo(); } + if (CompatChanges.isChangeEnabled(DETECT_EXPLICIT_GC)) { + detectExplicitGc(); + } return this; } @@ -591,26 +605,16 @@ public final class StrictMode { } /** - * Detect explicit GC requests, i.e. calls to Runtime.gc(). - * - * @hide + * Detect calls to {@link Runtime#gc()}. */ - @TestApi public @NonNull Builder detectExplicitGc() { - // TODO(b/3400644): Un-hide this for next API update - // TODO(b/3400644): Un-hide ExplicitGcViolation for next API update - // TODO(b/3400644): Make DETECT_EXPLICIT_GC a @TestApi for next API update - // TODO(b/3400644): Call this from detectAll in next API update return enable(DETECT_THREAD_EXPLICIT_GC); } /** - * Disable detection of explicit GC requests, i.e. calls to Runtime.gc(). - * - * @hide + * Disable detection of calls to {@link Runtime#gc()}. */ public @NonNull Builder permitExplicitGc() { - // TODO(b/3400644): Un-hide this for next API update return disable(DETECT_THREAD_EXPLICIT_GC); } diff --git a/core/java/android/os/strictmode/ExplicitGcViolation.java b/core/java/android/os/strictmode/ExplicitGcViolation.java index 583ed1ab4505..c4ae82ddbc05 100644 --- a/core/java/android/os/strictmode/ExplicitGcViolation.java +++ b/core/java/android/os/strictmode/ExplicitGcViolation.java @@ -19,10 +19,7 @@ import android.annotation.TestApi; /** * See #{@link android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc()}. - * - * @hide */ -@TestApi public final class ExplicitGcViolation extends Violation { /** @hide */ public ExplicitGcViolation() { |