Merge "Fix binder leakage and activity leakage in MobileNetworkSettings."
am: ae6dac9126

Change-Id: I4164d30236fc77a2a73c18df8f74282463565fac
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 148d1ad..1307f9c 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