summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2013-04-30 13:06:04 +0200
committerDanny Baumann <dannybaumann@web.de>2013-04-30 13:08:34 +0200
commit9975780f073b29fbb85b0ee1cd700f1828f783c7 (patch)
tree6f35b734cc50ed9843b5fb4983d66b3746665e3d /packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
parentc926976008af16ab5e3a0bb532aeeb69565e3429 (diff)
downloadframeworks_base-9975780f073b29fbb85b0ee1cd700f1828f783c7.zip
frameworks_base-9975780f073b29fbb85b0ee1cd700f1828f783c7.tar.gz
frameworks_base-9975780f073b29fbb85b0ee1cd700f1828f783c7.tar.bz2
Fix SystemUI memory leaks on theme changes.
ContentObserver and BroadcastReceiver instances were dangling after the status bar was recreated. Change-Id: I0ef7ef134029e5deec066d405545b8d9ec58d76b
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
index 01178c0..9aeb200 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CircleBattery.java
@@ -54,6 +54,7 @@ public class CircleBattery extends ImageView {
private Handler mHandler;
private Context mContext;
private BatteryReceiver mBatteryReceiver = null;
+ private SettingsObserver mObserver;
// state variables
private boolean mAttached; // whether or not attached to a window
@@ -100,6 +101,10 @@ public class CircleBattery extends ImageView {
onChange(true);
}
+ public void unobserve() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
@Override
public void onChange(boolean selfChange) {
int batteryStyle = (Settings.System.getInt(mContext.getContentResolver(),
@@ -190,8 +195,7 @@ public class CircleBattery extends ImageView {
mContext = context;
mHandler = new Handler();
- SettingsObserver settingsObserver = new SettingsObserver(mHandler);
- settingsObserver.observe();
+ mObserver = new SettingsObserver(mHandler);
mBatteryReceiver = new BatteryReceiver(mContext);
// initialize and setup all paint variables
@@ -260,6 +264,7 @@ public class CircleBattery extends ImageView {
super.onAttachedToWindow();
if (!mAttached) {
mAttached = true;
+ mObserver.observe();
mBatteryReceiver.updateRegistration();
mHandler.postDelayed(mInvalidate, 250);
}
@@ -270,6 +275,7 @@ public class CircleBattery extends ImageView {
super.onDetachedFromWindow();
if (mAttached) {
mAttached = false;
+ mObserver.unobserve();
mBatteryReceiver.updateRegistration();
mRectLeft = null; // makes sure, size based variables get
// recalculated on next attach