فهرست منبع

在AspectJ取消执行任务的逻辑判断

詹子聪 5 سال پیش
والد
کامیت
e102769e84
2فایلهای تغییر یافته به همراه25 افزوده شده و 1 حذف شده
  1. 9 0
      app/src/main/java/com/miekir/newmvp/LoadingAspect.java
  2. 16 1
      app/src/main/java/com/miekir/newmvp/MainActivity.java

+ 9 - 0
app/src/main/java/com/miekir/newmvp/LoadingAspect.java

@@ -35,8 +35,17 @@ public class LoadingAspect {
             liveDataField = targetObject.getClass().getField("liveData");
         } catch (Exception e) {
             e.printStackTrace();
+            joinPoint.proceed();
+            return;
         }
+
         if (liveDataField != null) {
+            // 得到此属性的值
+            Object liveData = liveDataField.get(targetObject);
+            if (liveData == null) {
+                Log.e(TAG, "live data value null....");
+                return;
+            }
             //如果在Around中不调用joinPoint.proceed(),则@Before注解的方法不会调用,但是@After还是会调用。
             joinPoint.proceed();
             Log.e(TAG, "proceed....");

+ 16 - 1
app/src/main/java/com/miekir/newmvp/MainActivity.java

@@ -1,6 +1,8 @@
 package com.miekir.newmvp;
 
+import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -29,7 +31,20 @@ public class MainActivity extends BaseMvpActivity {
             @Override
             public void onClick(View view) {
                 // 点击之后,后台执行耗时操作
-                viewModel1.go();
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        viewModel1.go();
+                    }
+                }, 5000);
+            }
+        });
+
+        findViewById(R.id.btn_test).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                // 点击之后,后台执行耗时操作
+                startActivity(new Intent(MainActivity.this, MainActivity.class));
             }
         });
     }