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

Posted 摘星猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轻松搞定 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<WeatherInfo> getTest();
   //mvp  view
   public interface view extends BaseMvpView 
       void onWeatherInfo(WeatherInfo info);
   
   //mvp presenter
   public interface presenter 
       void getWeatherInfo();
   

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

public class WeatherPresenter extends BasePresenter<WeatherApi.view> implements WeatherApi.presenter 
   public WeatherPresenter(WeatherApi.view view) 
       super(view);
   

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

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

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

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

public class MainActivity extends MvpActivity<WeatherPresenter> 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<WeatherPresenter> 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 MVP 架构okHttp 网络模块封装 的 项目的主要内容,如果未能解决你的问题,请参考以下文章

Android MVP框架MVPro的使用和源码分析

MVP架构-Android官方MVP项目和响应式MVP-RxJava项目架构分析对比解读

Android中的MVP架构初探

Android开发中的MVP架构

android MVP——mvp架构的应用和优化

Android官方MVP架构解读