Kaynağa Gözat

测试准备

詹子聪 5 yıl önce
ebeveyn
işleme
a4cfd3afe7

+ 14 - 0
app/src/main/java/com/miekir/newmvp/ITestView.java

@@ -0,0 +1,14 @@
+package com.miekir.newmvp;
+
+import com.miekir.mvp.view.IView;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/10/6 20:54
+ * Description:
+ */
+public interface ITestView extends IView {
+    void onLoginResult(int code, String msg);
+}

+ 29 - 2
app/src/main/java/com/miekir/newmvp/MainActivity.java

@@ -3,12 +3,39 @@ package com.miekir.newmvp;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.os.Bundle;
+import android.util.Log;
 
-public class MainActivity extends AppCompatActivity {
+import com.miekir.mvp.presenter.InjectPresenter;
+import com.miekir.mvp.view.BaseMVPActivity;
+
+public class MainActivity extends BaseMVPActivity implements ITestView {
+    @InjectPresenter
+    TestPresenter presenter;
+
+
+    @Override
+    public int getLayoutID() {
+        return R.layout.activity_main;
+    }
+
+    @Override
+    public void initViews(Bundle savedInstanceState) {
+
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        presenter.go();
+    }
+
+    @Override
+    public void onLoginResult(final int code, String msg) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                Log.e("mmmmm", "code: " + code);
+            }
+        });
     }
 }

+ 26 - 0
app/src/main/java/com/miekir/newmvp/TestPresenter.java

@@ -0,0 +1,26 @@
+package com.miekir.newmvp;
+
+import com.miekir.mvp.presenter.BasePresenter;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/10/6 20:53
+ * Description:
+ */
+public class TestPresenter extends BasePresenter<ITestView> {
+    public void go() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    Thread.sleep(10000);
+                    getView().onLoginResult(3, "ddd");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+}

+ 19 - 0
mvp/src/main/java/com/miekir/mvp/ProxyHandler.java

@@ -0,0 +1,19 @@
+package com.miekir.mvp;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+public class ProxyHandler implements InvocationHandler {
+    private Object object;
+
+    public ProxyHandler(Object object){
+        this.object = object;
+    }
+    @Override
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+        //System.out.println("Before invoke "  + method.getName());
+        method.invoke(object, args);
+        //System.out.println("After invoke " + method.getName());
+        return null;
+    }
+}

+ 5 - 0
mvp/src/main/java/com/miekir/mvp/presenter/BasePresenter.java

@@ -1,13 +1,18 @@
 package com.miekir.mvp.presenter;
 
+import com.miekir.mvp.ProxyHandler;
 import com.miekir.mvp.view.IView;
 
 import java.lang.ref.WeakReference;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Proxy;
 
 public abstract class BasePresenter<V extends IView> {
     private WeakReference<V> wrf;
 
+    private Class<V> vClazz;
     public void attachView(V view) {
+        vClazz = (Class<V>) view.getClass();
         wrf = new WeakReference<V>(view);
     }