summaryrefslogtreecommitdiff
path: root/core/java/android/app/AlarmManager.java
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2016-04-21 15:05:34 -0700
committerChristopher Tate <ctate@google.com>2016-04-21 15:05:34 -0700
commitd0cca79f3c438f6db28603dc50bfa44d48461728 (patch)
tree7a96171b5290608db3e8eb2f7920071327b674d8 /core/java/android/app/AlarmManager.java
parent665189f92646d34bf02082120cba3c62aa718770 (diff)
Don't worry about an extra weak indirection with callback alarms
Bug 27995384 Change-Id: Ie9cf3e05dca4af7085b479fb65d4cf45ee0239ba
Diffstat (limited to 'core/java/android/app/AlarmManager.java')
-rw-r--r--core/java/android/app/AlarmManager.java26
1 files changed, 7 insertions, 19 deletions
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index e4fff9dc8a8c..02dcc5c7e3bd 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -33,7 +33,6 @@ import android.util.Log;
import libcore.util.ZoneInfoDB;
import java.io.IOException;
-import java.lang.ref.WeakReference;
import java.util.WeakHashMap;
/**
@@ -245,12 +244,7 @@ public class AlarmManager {
// Tracking of the OnAlarmListener -> wrapper mapping, for cancel() support.
// Access is synchronized on the AlarmManager class object.
- //
- // These are weak references so that we don't leak listener references if, for
- // example, the pending-alarm messages are posted to a HandlerThread that is
- // disposed of prior to alarm delivery. The underlying messages will be GC'd
- // but this static reference would still persist, orphaned, never deallocated.
- private static WeakHashMap<OnAlarmListener, WeakReference<ListenerWrapper>> sWrappers;
+ private static WeakHashMap<OnAlarmListener, ListenerWrapper> sWrappers;
/**
* package private on purpose
@@ -637,16 +631,14 @@ public class AlarmManager {
if (listener != null) {
synchronized (AlarmManager.class) {
if (sWrappers == null) {
- sWrappers = new WeakHashMap<OnAlarmListener, WeakReference<ListenerWrapper>>();
+ sWrappers = new WeakHashMap<OnAlarmListener, ListenerWrapper>();
}
- WeakReference<ListenerWrapper> wrapperRef = sWrappers.get(listener);
- // no existing wrapper *or* we've lost our weak ref to it => build a new one
- if (wrapperRef == null ||
- (recipientWrapper = wrapperRef.get()) == null) {
+ recipientWrapper = sWrappers.get(listener);
+ // no existing wrapper => build a new one
+ if (recipientWrapper == null) {
recipientWrapper = new ListenerWrapper(listener);
- wrapperRef = new WeakReference<ListenerWrapper>(recipientWrapper);
- sWrappers.put(listener, wrapperRef);
+ sWrappers.put(listener, recipientWrapper);
}
}
@@ -906,11 +898,7 @@ public class AlarmManager {
ListenerWrapper wrapper = null;
synchronized (AlarmManager.class) {
if (sWrappers != null) {
- final WeakReference<ListenerWrapper> wrapperRef;
- wrapperRef = sWrappers.get(listener);
- if (wrapperRef != null) {
- wrapper = wrapperRef.get();
- }
+ wrapper = sWrappers.get(listener);
}
}