Android MVP框架

Android MVP框架,第1张

Android MVP框架

首先先看一下我的分包

interfaces:

        API接口地址;

        网络请求框架;

mvp:         model:

                bean类;

        presenter:

                逻辑处理;

        view:

                返回成功或失败的方法;

view:

        activity

        fragment

接下来看代码

一.在AndroidManifest.xml中添加网络权限
二.在build.gradle中添加一些依赖
    //OKHTTP依赖
    implementation 'com.squareup.okhttp3:okhttp:3.12.0'
    implementation 'com.squareup.okio:okio:2.9.0'
    //OKHTTP的拦截器依赖
    implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
    //RXjava依赖
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    //gson解析
    implementation 'com.google.code.gson:gson:2.8.6'
    //GsonConverterFactory依赖
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
三.关于interfaces包中的类
Api

public class Api {
    public final static String base= "http://xxxxxxxxxx";
}
ApiInterface
import com.test.mvp.mvp.model.TestBean;
import java.util.HashMap;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.QueryMap;



public interface ApiInterface {

    @GET("xxx/xxx/xxx")
    Observable testbean(@QueryMap HashMap map);
}
RetrofitUtil
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;



public class RetrofitUtil {

    private static RetrofitUtil instance;
    private final Retrofit retrofit;

    //单例模式
    public static RetrofitUtil getInstance(){
        if (instance == null){
            synchronized (RetrofitUtil.class){
                if (instance == null){
                    instance = new RetrofitUtil();
                }
            }
        }
        return instance;
    }

    //网络请求
    private RetrofitUtil(){
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .connectTimeout(10000,TimeUnit.SECONDS)
                .readTimeout(10000,TimeUnit.MILLISECONDS)
                .writeTimeout(10000,TimeUnit.SECONDS)
                .retryonConnectionFailure(true)
                .build();
        retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .baseUrl(Api.base)
                .client(okHttpClient)
                .build();
    }

    public  T create(final Class service){
        return retrofit.create(service);
    }
}
四.mvp框架         model包:
baseModel

public class baseModel {
    public int code;
    public String msg;
    public String message;
    public String url;
    public T data;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
TestBean

public class TestBean {

}
        presenter包:
basePresenter

public class basePresenter {
    private T view;

    public T getView(){
        return view;
    }

    public void setView(T view) {
        this.view = view;
    }

    public void onDetach(){
        if (view != null) {
            view = null;
        }
    }
}
TestPresenter
import androidx.annotation.NonNull;
import com.test.mvp.interfaces.ApiInterface;
import com.test.mvp.interfaces.RetrofitUtil;
import com.test.mvp.mvp.model.TestBean;
import com.test.mvp.mvp.view.TestView;
import java.util.HashMap;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;



public class TestPresenter extends basePresenter {
    public void getdata(HashMap hashMap){
        ApiInterface api = RetrofitUtil.getInstance().create(ApiInterface.class);
        api.testbean(hashMap).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {

                    }

                    @Override
                    public void onNext(@NonNull TestBean testBean) {
                        getView().onTestSuccess(testBean);
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {
                        getView().onTestFailure(e.getMessage());
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}
        view包:
baseView

public interface baseView {

}
TestView
import androidx.annotation.NonNull;



public interface TestView extends baseView {
    
    void onTestSuccess(@NonNull T t);

    
    void onTestFailure(String msg);
}
五:Activity中发起请求
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.test.mvp.R;
import com.test.mvp.mvp.model.TestBean;
import com.test.mvp.mvp.presenter.TestPresenter;
import com.test.mvp.mvp.view.TestView;
import java.util.HashMap;

public class MainActivity extends AppCompatActivity implements TestView {

    String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        test();
    }

    //请求接口
    private void test(){
        TestPresenter testPresenter = new TestPresenter();
        testPresenter.setView(this);
        HashMap hashMap = new HashMap<>();
        hashMap.put("","");
        testPresenter.getdata(hashMap);
    }

    
    @Override
    public void onTestSuccess(@NonNull TestBean testBean) {
        Log.d(TAG,"请求成功");
    }

    
    @Override
    public void onTestFailure(String msg) {
        Log.d(TAG,"请求失败");
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5612736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存