1
0
Эх сурвалжийг харах

0.0.45.beta18 ready
- 完善主线程获取方式;

kongzue 3 жил өмнө
parent
commit
9f9a59259f

+ 1 - 0
.idea/misc.xml

@@ -147,6 +147,7 @@
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/item_custom_recycleview.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_dialog.xml" value="0.36944444444444446" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_dialog_from_top.xml" value="0.5328205128205128" />
+        <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_dialog_t.xml" value="0.5364583333333334" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_recycleview.xml" value="0.5411458333333333" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_reply.xml" value="0.5328205128205128" />
         <entry key="..\:/WorkSpace/Android/DialogXDemo/app/src/main/res/layout/layout_custom_reply_dark.xml" value="0.5328205128205128" />

+ 10 - 3
DialogX/src/main/java/com/kongzue/dialogx/interfaces/BaseDialog.java

@@ -58,7 +58,7 @@ import static com.kongzue.dialogx.DialogX.DEBUGMODE;
  */
 public abstract class BaseDialog {
     
-    protected static Thread uiThread;
+    private static Thread uiThread;
     private static WeakReference<FrameLayout> rootFrameLayout;
     private static WeakReference<Activity> activityWeakReference;
     protected WeakReference<Activity> ownActivity;
@@ -85,7 +85,7 @@ public abstract class BaseDialog {
     
     private static void initActivityContext(Activity activity) {
         try {
-            uiThread = Thread.currentThread();
+            uiThread = Looper.getMainLooper().getThread();
             activityWeakReference = new WeakReference<>(activity);
             rootFrameLayout = new WeakReference<>((FrameLayout) activity.getWindow().getDecorView());
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
@@ -662,13 +662,20 @@ public abstract class BaseDialog {
     public abstract String dialogKey();
     
     protected static void runOnMain(Runnable runnable) {
-        if (!DialogX.autoRunOnUIThread || (uiThread != null && Thread.currentThread() == uiThread)) {
+        if (!DialogX.autoRunOnUIThread || (getUiThread() != null && Thread.currentThread() == getUiThread())) {
             runnable.run();
             return;
         }
         runOnMain(runnable, true);
     }
     
+    protected static Thread getUiThread() {
+        if (uiThread == null) {
+            uiThread = Looper.getMainLooper().getThread();
+        }
+        return uiThread;
+    }
+    
     protected static void runOnMain(Runnable runnable, boolean needWaitMainLooper) {
         getMainHandler().post(runnable);
     }