aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ui/WeakReferenceHandler.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-12-03 17:50:17 +0100
committerBananeweizen <bananeweizen@gmx.de>2012-12-03 17:50:17 +0100
commitff52a912f6e8d82fbd626b0ae9fa6af302f659d1 (patch)
tree616ee5545d423adccc460d3d13732aae65424174 /main/src/cgeo/geocaching/ui/WeakReferenceHandler.java
parentd9887e50d58d089c9379faca4f3b4d0e3bf5d564 (diff)
downloadcgeo-ff52a912f6e8d82fbd626b0ae9fa6af302f659d1.zip
cgeo-ff52a912f6e8d82fbd626b0ae9fa6af302f659d1.tar.gz
cgeo-ff52a912f6e8d82fbd626b0ae9fa6af302f659d1.tar.bz2
refactoring: introduce handler with weak reference to activity
* remaining handler classes need to be changed also if no issues occur
Diffstat (limited to 'main/src/cgeo/geocaching/ui/WeakReferenceHandler.java')
-rw-r--r--main/src/cgeo/geocaching/ui/WeakReferenceHandler.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/ui/WeakReferenceHandler.java b/main/src/cgeo/geocaching/ui/WeakReferenceHandler.java
new file mode 100644
index 0000000..4724466
--- /dev/null
+++ b/main/src/cgeo/geocaching/ui/WeakReferenceHandler.java
@@ -0,0 +1,27 @@
+package cgeo.geocaching.ui;
+
+import android.app.Activity;
+import android.os.Handler;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * Standard handler implementation which uses a weak reference to its activity. This avoids that activities stay in
+ * memory due to references from the handler to the activity (see Android Lint warning "HandlerLeak")
+ *
+ * Create static private subclasses of this handler class in your activity.
+ *
+ * @param <ActivityType>
+ */
+public abstract class WeakReferenceHandler<ActivityType extends Activity> extends Handler {
+
+ private final WeakReference<ActivityType> activityRef;
+
+ protected WeakReferenceHandler(final ActivityType activity) {
+ this.activityRef = new WeakReference<ActivityType>(activity);
+ }
+
+ protected ActivityType getActivity() {
+ return activityRef.get();
+ }
+}