android封装网络请求界面,轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目...
CommonMvp
commonMvp 能做什么?
1、mvp 實(shí)現(xiàn) model view presenter 業(yè)務(wù)和界面解耦
2、整合 網(wǎng)絡(luò) 請(qǐng)求
3、簡(jiǎn)化網(wǎng)絡(luò)調(diào)用流程
4、整合狀態(tài)欄和標(biāo)題欄 實(shí)現(xiàn)沉浸式 狀態(tài)欄
5、Activity 、Fragment 中 使用方法 一致 接口式封裝 生命周期
1、有問題請(qǐng) 提交 isuue/(QQ:194093798) 謝謝大家 持續(xù)更新
2、為新手提供一個(gè) 可靠 可用的 mvp 框架結(jié)構(gòu)
集成
allprojects {
repositories {
jcenter()
}
}
dependencies {
implementation 'org.zhx.common:uikits:1.1.0'
}
非Androidx 項(xiàng)目 :
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 實(shí)現(xiàn)網(wǎng)絡(luò)全套)
2、immersionbar 實(shí)現(xiàn)沉浸式狀態(tài)欄
3、fastjson 實(shí)現(xiàn)json 解析
代碼調(diào)用
1、創(chuàng)建 Mvp contact類 將 presenter 接口、 view 接口 和okHttp serverApi 關(guān)聯(lián)在一起 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、 創(chuàng)建 WeatherPresenter 主要業(yè)務(wù)類 繼承 BasePresenter實(shí)現(xiàn) WeatherApi.presenter
public class WeatherPresenter extends BasePresenterimplements WeatherApi.presenter {
public WeatherPresenter(WeatherApi.view view) {
super(view);
}
@Override
public void getWeatherInfo() {
//鏈?zhǔn)秸{(diào)用流程
manager.with(WeatherApi.class).getTest().excute(new ObjectNetRequstAdapter(mView) {
@Override
protected void onResultData(WeatherInfo info) {
mView.onWeatherInfo(info);
}
});
}
}
Activity 、Fragment 中 使用 方法 一致 同步封裝 方法
3、 activity 中使用 繼承 MvpActivity 實(shí)現(xiàn) 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 設(shè)置布局
return R.layout.activity_main;
}
@Override
public void onLoadArgumentsData(Intent intent) {
//TODO 獲取傳遞過來的參數(shù)
}
@Override
public void onLoadDataFromSavedInstanceState(Bundle savedInstanceState) {
//TODO 從低內(nèi)存 獲取 參數(shù) (如果 你 在 onSaveInstanceState(Bundle outState) 方法中保存了數(shù)據(jù))
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
//TODO 保存 數(shù)據(jù) 以供 從低內(nèi)存恢復(fù) 時(shí) 還原界面
}
@Override
public void onCreatView() {
//TODO 初始化 組件
mTextView = findViewById(R.id.result_tv);
}
@Override
public void onLoadContent() {
//TODO 在這個(gè)位置 獲取 網(wǎng)絡(luò) 數(shù)據(jù)
mPresenter.getWeatherInfo();
}
@Override
public void onWeatherInfo(WeatherInfo info) {
//TODO 天氣信息 (mPresenter.getWeatherInfo() 接口回調(diào))
mTextView.setText(info.toString());
}
}
4、 Fragment中使用 繼承 MvpFragment 實(shí)現(xiàn) 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 加載網(wǎng)絡(luò)數(shù)據(jù) 或者 設(shè)置 傳遞過來的參數(shù)
mPresenter.getWeatherInfo();
}
@Override
public void onWeatherInfo(WeatherInfo info) {
//TODO 天氣信息 (mPresenter.getWeatherInfo() 接口回調(diào))
mTextView.setText(info.toString());
}
}
demo 下載
總結(jié)
以上是生活随笔為你收集整理的android封装网络请求界面,轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言符合运算符的运算顺序,二 如何学习
- 下一篇: android 命令启动服务,adb 命