Prechádzať zdrojové kódy

- Lifecycle.State.DESTROYED 时机调整到销毁 dialogImpl 之前;

Kongzue 2 týždňov pred
rodič
commit
b5b21f9e7e

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/BottomDialog.java

@@ -375,10 +375,10 @@ public class BottomDialog extends BaseDialog implements DialogXBaseBottomDialog
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     BottomDialog.this.onDismiss(me);
+                    setLifecycleState(Lifecycle.State.DESTROYED);
                     dialogImpl = null;
                     bottomDialogTouchEventInterceptor = null;
                     dialogLifecycleCallback = null;
-                    setLifecycleState(Lifecycle.State.DESTROYED);
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/CustomDialog.java

@@ -209,9 +209,9 @@ public class CustomDialog extends BaseDialog {
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     CustomDialog.this.onDismiss(me);
+                    setLifecycleState(Lifecycle.State.DESTROYED);
                     dialogImpl = null;
                     dialogLifecycleCallback = null;
-                    setLifecycleState(Lifecycle.State.DESTROYED);
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/FullScreenDialog.java

@@ -209,10 +209,10 @@ public class FullScreenDialog extends BaseDialog implements DialogXBaseBottomDia
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     FullScreenDialog.this.onDismiss(me);
+                    setLifecycleState(Lifecycle.State.DESTROYED);
                     fullScreenDialogTouchEventInterceptor = null;
                     dialogImpl = null;
                     dialogLifecycleCallback = null;
-                    setLifecycleState(Lifecycle.State.DESTROYED);
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/MessageDialog.java

@@ -418,9 +418,9 @@ public class MessageDialog extends BaseDialog {
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     MessageDialog.this.onDismiss(me);
+                    setLifecycleState(Lifecycle.State.DESTROYED);
                     dialogLifecycleCallback = null;
 
-                    setLifecycleState(Lifecycle.State.DESTROYED);
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopMenu.java

@@ -492,11 +492,11 @@ public class PopMenu extends BaseDialog {
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     PopMenu.this.onDismiss(me);
+                    setLifecycleState(Lifecycle.State.DESTROYED);
                     menuListAdapter = null;
                     dialogImpl = null;
                     baseView(null);
                     dialogLifecycleCallback = null;
-                    setLifecycleState(Lifecycle.State.DESTROYED);
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopNotification.java

@@ -575,8 +575,8 @@ public class PopNotification extends BaseDialog implements NoTouchInterface {
                     isShow = false;
                     getDialogLifecycleCallback().onDismiss(me);
                     PopNotification.this.onDismiss(me);
-                    dialogImpl = null;
                     setLifecycleState(Lifecycle.State.DESTROYED);
+                    dialogImpl = null;
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/PopTip.java

@@ -542,8 +542,8 @@ public class PopTip extends BaseDialog implements NoTouchInterface {
                     }
                     getDialogLifecycleCallback().onDismiss(me);
                     PopTip.this.onDismiss(me);
-                    dialogImpl = null;
                     setLifecycleState(Lifecycle.State.DESTROYED);
+                    dialogImpl = null;
                     System.gc();
                 }
             });

+ 1 - 1
DialogX/src/main/java/com/kongzue/dialogx/dialogs/WaitDialog.java

@@ -798,13 +798,13 @@ public class WaitDialog extends BaseDialog {
     public void cleanInstance() {
         isShow = false;
         getDialogLifecycleCallback().onDismiss(WaitDialog.this);
+        setLifecycleState(Lifecycle.State.DESTROYED);
         if (dialogImpl != null) dialogImpl.clear();
         dialogImpl = null;
         if (dialogView != null) dialogView.clear();
         dialogView = null;
         dialogLifecycleCallback = null;
         if (ownActivity != null) ownActivity.clear();
-        setLifecycleState(Lifecycle.State.DESTROYED);
         System.gc();
     }
 

+ 3 - 0
DialogX/src/main/java/com/kongzue/dialogx/util/views/DialogXBaseRelativeLayout.java

@@ -96,6 +96,9 @@ public class DialogXBaseRelativeLayout extends RelativeLayout {
             }
             setClipChildren(false);
             setClipToPadding(false);
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                setDefaultFocusHighlightEnabled(false);
+            }
 
             //新增的 设置监听 OnApplyWindowInsetsListener
             log("KONGZUE DEBUG DIALOGX: create fitSystemBarUtils");

+ 19 - 19
app/src/main/java/com/kongzue/dialogxdemo/activity/MainActivity.java

@@ -505,35 +505,35 @@ public class MainActivity extends BaseActivity {
             @Override
             public void onClick(View view) {
                 MessageDialog.show("标题", "这里是正文内容。", "确定")
-                        .onShow(new DialogXRunnable<MessageDialog>() {
+                        .setDialogLifecycleCallback(new DialogLifecycleCallback() {
                             @Override
-                            public void run(MessageDialog dialog) {
+                            public void onShow(BaseDialog dialog) {
                                 tip("onShow");
-
-                                //预置操作:动作1
-                                dialog.setActionRunnable(1, new DialogXRunnable<MessageDialog>() {
-                                    @Override
-                                    public void run(MessageDialog dialog) {
-                                        tip("action 1 run!");
-                                        //举例:需要通过网络加载数据到 dialog 中显示
-                                    }
-                                });
-                                //执行动作1
-                                dialog.runAction(1);
+                                super.onShow(dialog);
                             }
-                        }).onDismiss(new DialogXRunnable<MessageDialog>() {
+
                             @Override
-                            public void run(MessageDialog dialog) {
+                            public void onDismiss(BaseDialog dialog) {
                                 tip("onDismiss");
+                                super.onDismiss(dialog);
                             }
-                        }).setTitleIcon(R.mipmap.img_demo_avatar)
+                        })
+//                        .onShow(new DialogXRunnable<MessageDialog>() {
+//                            @Override
+//                            public void run(MessageDialog dialog) {
+//                                tip("onShow");
+//                            }
+//                        }).onDismiss(new DialogXRunnable<MessageDialog>() {
+//                            @Override
+//                            public void run(MessageDialog dialog) {
+//                                tip("onDismiss");
+//                            }
+//                        })
+                        .setTitleIcon(R.mipmap.img_demo_avatar)
                         .setOkButton(new OnDialogButtonClickListener<MessageDialog>() {
                             @Override
                             public boolean onClick(MessageDialog dialog, View v) {
                                 PopTip.show("点击确定按钮");
-                                //举例:点击ok按钮后执行了一些操作但需要在不关掉对话框情况下重新加载执行动作1
-                                //执行动作1
-                                dialog.runAction(1);
                                 return true;
                             }
                         });