diff options
Diffstat (limited to 'android/os/PowerManager.java')
-rw-r--r-- | android/os/PowerManager.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/android/os/PowerManager.java b/android/os/PowerManager.java index 068f5f7f..cd6d41b3 100644 --- a/android/os/PowerManager.java +++ b/android/os/PowerManager.java @@ -466,7 +466,7 @@ public final class PowerManager { * @hide */ @Retention(RetentionPolicy.SOURCE) - @IntDef({ + @IntDef(prefix = { "SHUTDOWN_REASON_" }, value = { SHUTDOWN_REASON_UNKNOWN, SHUTDOWN_REASON_SHUTDOWN, SHUTDOWN_REASON_REBOOT, @@ -680,6 +680,26 @@ public final class PowerManager { * as the user moves between applications and doesn't require a special permission. * </p> * + * <p> + * Recommended naming conventions for tags to make debugging easier: + * <ul> + * <li>use a unique prefix delimited by a colon for your app/library (e.g. + * gmail:mytag) to make it easier to understand where the wake locks comes + * from. This namespace will also avoid collision for tags inside your app + * coming from different libraries which will make debugging easier. + * <li>use constants (e.g. do not include timestamps in the tag) to make it + * easier for tools to aggregate similar wake locks. When collecting + * debugging data, the platform only monitors a finite number of tags, + * using constants will help tools to provide better debugging data. + * <li>avoid using Class#getName() or similar method since this class name + * can be transformed by java optimizer and obfuscator tools. + * <li>avoid wrapping the tag or a prefix to avoid collision with wake lock + * tags from the platform (e.g. *alarm*). + * <li>never include personnally identifiable information for privacy + * reasons. + * </ul> + * </p> + * * @param levelAndFlags Combination of wake lock level and flag values defining * the requested behavior of the WakeLock. * @param tag Your class name (or other tag) for debugging purposes. @@ -1509,11 +1529,18 @@ public final class PowerManager { * cost of that work can be accounted to the application. * </p> * + * <p> + * Make sure to follow the tag naming convention when using WorkSource + * to make it easier for app developers to understand wake locks + * attributed to them. See {@link PowerManager#newWakeLock(int, String)} + * documentation. + * </p> + * * @param ws The work source, or null if none. */ public void setWorkSource(WorkSource ws) { synchronized (mToken) { - if (ws != null && ws.size() == 0) { + if (ws != null && ws.isEmpty()) { ws = null; } @@ -1525,7 +1552,7 @@ public final class PowerManager { changed = true; mWorkSource = new WorkSource(ws); } else { - changed = mWorkSource.diff(ws); + changed = !mWorkSource.equals(ws); if (changed) { mWorkSource.set(ws); } |