Ver código fonte

Undid message scrubbing as it causes too many issues.

Aidan Follestad 10 anos atrás
pai
commit
a19663035a

+ 0 - 30
library/src/main/java/com/afollestad/materialdialogs/DialogBase.java

@@ -3,11 +3,8 @@ package com.afollestad.materialdialogs;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.os.Message;
 import android.view.View;
 
-import java.lang.reflect.Field;
-
 /**
  * @author Aidan Follestad (afollestad)
  */
@@ -37,31 +34,4 @@ class DialogBase extends Dialog implements DialogInterface.OnShowListener {
         if (mShowListener != null)
             mShowListener.onShow(dialog);
     }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        // Prevent framework leak
-        try {
-            Class superCls = getClass().getSuperclass().getSuperclass();
-            Field cancelMsg = superCls.getDeclaredField("mCancelMessage");
-            scrubMessageField(cancelMsg);
-            Field dismissMsg = superCls.getDeclaredField("mDismissMessage");
-            scrubMessageField(dismissMsg);
-            Field showMsg = superCls.getDeclaredField("mShowMessage");
-            scrubMessageField(showMsg);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private void scrubMessageField(Field field) throws Exception {
-        field.setAccessible(true);
-        Object val = field.get(this);
-        if (val != null) {
-            Message msg = (Message) val;
-            msg.recycle();
-            field.set(this, null);
-        }
-    }
 }

+ 9 - 11
library/src/main/java/com/afollestad/materialdialogs/DialogInit.java

@@ -303,17 +303,7 @@ class DialogInit {
                     ViewGroup.LayoutParams.WRAP_CONTENT));
         }
 
-        // Setup internal show listener
-        dialog.setOnShowListenerInternal();
-
-        // Other internal initialization
-        dialog.invalidateList();
-        dialog.setViewInternal(dialog.view);
-        dialog.checkIfListInitScroll();
-    }
-
-    public static void resetListeners(MaterialDialog dialog) {
-        MaterialDialog.Builder builder = dialog.getBuilder();
+        // Setup user listeners
         if (builder.showListener != null)
             dialog.setOnShowListener(builder.showListener);
         if (builder.cancelListener != null)
@@ -322,6 +312,14 @@ class DialogInit {
             dialog.setOnDismissListener(builder.dismissListener);
         if (builder.keyListener != null)
             dialog.setOnKeyListener(builder.keyListener);
+
+        // Setup internal show listener
+        dialog.setOnShowListenerInternal();
+
+        // Other internal initialization
+        dialog.invalidateList();
+        dialog.setViewInternal(dialog.view);
+        dialog.checkIfListInitScroll();
     }
 
     private static void setupProgressDialog(final MaterialDialog dialog) {

+ 0 - 2
library/src/main/java/com/afollestad/materialdialogs/MaterialDialog.java

@@ -1400,8 +1400,6 @@ public class MaterialDialog extends DialogBase implements
             if (input.getText().length() > 0)
                 input.setSelection(input.getText().length());
         }
-        // Set listeners initially or in case they were scrubbed when the dialog was dismissed previously
-        DialogInit.resetListeners(this);
         super.onShow(dialog);
     }