android封装网络请求界面,轻松搞定 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 CommonObservablegetTest();
//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 BasePresenterimplements 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 MvpActivityimplements 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 MvpFragmentimplements 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 架构、okHttp 网络模块封装 的 项目...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言符合运算符的运算顺序,二 如何学习
- 下一篇: android 命令启动服务,adb 命