轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目

CommonMvp

commonMvp 能做什么?

1、mvp 实现 model view presenter 业务和界面解耦

2、整合 网络 请求

3、简化网络调用流程

4、整合状态栏和标题栏 实现沉浸式 状态栏

5、Activity 、Fragment 中 使用方法 一致 接口式封装 生命周期

1、有问题请 提交 isuue/(QQ:194093798) 谢谢大家 持续更新

2、为新手提供一个 可靠 可用的 mvp 框架结构

集成

allprojects {
    repositories {
        jcenter()
    }
}
dependencies {
 implementation 'org.zhx.common:uikits:1.1.0'
 }

非Androidx 项目 :

build.gradle 中:

   dependencies {
        implementation 'org.zhx.common:uikits:1.1.0'
   }

并且 gradle.properties中 添加:

android.useAndroidX=true
android.enableJetifier=true

配合使用的框架

1、okhttp 、retrofit2、rxJava 、rxandroid (okhttp 实现网络全套)

2、immersionbar 实现沉浸式状态栏

3、fastjson 实现json 解析

代码调用

1、创建 Mvp contact类 将 presenter 接口、 view 接口 和okHttp serverApi 关联在一起 WeatherApi

public interface WeatherApi {
   //OkHttp  api server
   @GET("http://t.weather.sojson.com/api/weather/city/101030100")
   public CommonObservable getTest();
   //mvp  view
   public interface view extends BaseMvpView {
       void onWeatherInfo(WeatherInfo info);
   }
   //mvp presenter
   public interface presenter {
       void getWeatherInfo();
   }
}

2、 创建 WeatherPresenter 主要业务类 继承 BasePresenter 实现 WeatherApi.presenter

public class WeatherPresenter extends BasePresenter implements WeatherApi.presenter {
   public WeatherPresenter(WeatherApi.view view) {
       super(view);
   }

   @Override
   public void getWeatherInfo() {
       //链式调用流程
       manager.with(WeatherApi.class).getTest().excute(new ObjectNetRequstAdapter(mView) {

           @Override
           protected void onResultData(WeatherInfo info) {
               mView.onWeatherInfo(info);
           }
       });
   }
}

Activity 、Fragment 中 使用 方法 一致 同步封装 方法

3、 activity 中使用 继承 MvpActivity 实现 WeatherApi.view

public class MainActivity extends MvpActivity implements WeatherApi.view {
    private TextView mTextView;

    @Override
    public WeatherPresenter initPresenter() {
        //TODO  初始化  presenter
        return new WeatherPresenter(this);
    }

    @Override
    public int initLayout() {
        //TODO 设置布局
        return R.layout.activity_main;
    }

    @Override
    public void onLoadArgumentsData(Intent intent) {
        //TODO  获取传递过来的参数

    }

    @Override
    public void onLoadDataFromSavedInstanceState(Bundle savedInstanceState) {
        //TODO  从低内存 获取 参数  (如果 你 在 onSaveInstanceState(Bundle outState) 方法中保存了数据)
    }

    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        //TODO 保存 数据 以供 从低内存恢复 时 还原界面
    }

    @Override
    public void onCreatView() {
        //TODO  初始化 组件
        mTextView = findViewById(R.id.result_tv);
    }

    @Override
    public void onLoadContent() {
        //TODO 在这个位置 获取 网络 数据
        mPresenter.getWeatherInfo();
    }

    @Override
    public void onWeatherInfo(WeatherInfo info) {
        //TODO 天气信息 (mPresenter.getWeatherInfo()  接口回调)
        mTextView.setText(info.toString());
    }

}

4、 Fragment中使用 继承 MvpFragment 实现 WeatherApi.view

public class TestFragment extends MvpFragment implements WeatherApi.view {
    private TextView mTextView;

    @Override
    public WeatherPresenter initPresenter() {
        //TODO 初始化 天气 presenter
        return new WeatherPresenter(this);
    }

    @Override
    protected void onCreateView(View rootView) {
        //TODO 初始化 view findViewById
        mTextView = rootView.findViewById(R.id.result_tv);
    }

    @Override
    public int initLayout() {
        //TODO 初始化 布局文件
        return R.layout.activity_main;
    }

    @Override
    public void onLoadContent() {
        //TODO 加载网络数据 或者 设置 传递过来的参数
        mPresenter.getWeatherInfo();
    }

    @Override
    public void onWeatherInfo(WeatherInfo info) {
        //TODO 天气信息 (mPresenter.getWeatherInfo()  接口回调)
        mTextView.setText(info.toString());

    }
}

demo 下载

你可能感兴趣的:(android,Android,mvp,架构模式,MVP,OkHttp3,mvp,rxjava2,retrofit2,android,mvp,rxjava)