轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目
16lz
2022-06-25
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=trueandroid.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
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中使用Application保存全局变量
- Android(安卓)实现记住用户名和密码的功能
- Android多线程下载远程图片
- android进程间服务通信示例
- Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式
- Android(安卓)圆角边框实现
- Android属性动画——实现灵动菜单效果
- 浅谈Java中Collections.sort对List排序的两种方法