Merge "Fix binder leakage and activity leakage in MobileNetworkSettings." am: ae6dac9126
am: d72edcb69a
Change-Id: Iaa83964117e51f5d19dfa37c9625526d2fd91b78
diff --git a/src/com/android/phone/MobileDataPreference.java b/src/com/android/phone/MobileDataPreference.java
index 4e82f20..e1ceab0 100644
--- a/src/com/android/phone/MobileDataPreference.java
+++ b/src/com/android/phone/MobileDataPreference.java
@@ -63,6 +63,11 @@
super(context, attrs, com.android.internal.R.attr.switchPreferenceStyle);
}
+ // Must be called to avoid binder leakage.
+ void dispose() {
+ mListener.setListener(false, mSubId, getContext());
+ }
+
@Override
protected void onRestoreInstanceState(Parcelable s) {
CellDataState state = (CellDataState) s;
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 8b49d17..5d90258 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -947,8 +947,11 @@
@Override
public void onDestroy() {
- unbindNetworkQueryService();
super.onDestroy();
+ unbindNetworkQueryService();
+ if (mMobileDataPref != null) {
+ mMobileDataPref.dispose();
+ }
}
@Override