summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.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/SignalClusterTextView.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/SignalClusterTextView.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java
index 8d9dcfd..b4e3572 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterTextView.java
@@ -39,7 +39,6 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
-import com.android.systemui.statusbar.SignalClusterView.SettingsObserver;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.R;
@@ -62,6 +61,7 @@ public class SignalClusterTextView
TextView mMobileSignalText;
Handler mHandler;
+ SettingsObserver mObserver;
int dBm = 0;
@@ -76,6 +76,10 @@ public class SignalClusterTextView
Settings.System.STATUS_BAR_SIGNAL_TEXT), false, this);
}
+ void unobserve() {
+ mContext.getContentResolver().unregisterContentObserver(this);
+ }
+
@Override public void onChange(boolean selfChange) {
updateSettings();
}
@@ -93,9 +97,7 @@ public class SignalClusterTextView
super(context, attrs, defStyle);
mHandler = new Handler();
-
- SettingsObserver settingsObserver = new SettingsObserver(mHandler);
- settingsObserver.observe();
+ mObserver = new SettingsObserver(mHandler);
}
@Override
@@ -111,6 +113,7 @@ public class SignalClusterTextView
mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
+ mObserver.observe();
updateSettings();
}
}
@@ -118,6 +121,7 @@ public class SignalClusterTextView
@Override
protected void onDetachedFromWindow() {
if (mAttached) {
+ mObserver.unobserve();
mAttached = false;
}
super.onDetachedFromWindow();