您的位置:首页 > 其它

Retrofit+MVP框架封装记录篇

2018-01-09 10:10 155 查看
当下最流行的网络请求组合,retrofit2+okhttp+rxjava+mvp

package com.fragmentapp.http;

import android.os.Looper;
import android.util.Log;

import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;

/**
* Created by liuzhen on 2017/11/3.
*/

public abstract class BaseObserver<T extends BaseResponses> implements Observer<T> {
String TAG = getClass().getSimpleName();

@Override
public void onSubscribe(Disposable d) {
Log.e(TAG, "onSubscribe");
}

@Override
public void onNext(T t) {
Log.e(TAG, "onNext"+t);
if (t.getStatus() == 200) {
onNextResponse(t);
} else {
Log.e(TAG, "ErrorStatus:" + t.getStatus() + "ErrorInfo" + t.getInfo());
onErrorResponse(t);
}
}

@Override
public void onError(Throwable e) {
Log.e(TAG, "onError" + e.toString());
onNetWorkError("onError 网络超时,请重新尝试--"+e.getMessage());
if (Looper.myLooper() == null) {
Looper.prepare();
Log.e(TAG,"onError 网络超时,请重新尝试");
Looper.loop();
}

}

@Override
public void onComplete() {
Log.e(TAG, "onComplete");
}

/**返回成功*/
public abstract void onNextResponse(T t);
/**接口失败信息*/
public abstract void onErrorResponse(T t);
/**网络错误*/
public abstract void onNetWorkError(String val);
}


View Code





这个没啥好说的了

封装好了添加东西也就方便许多了,前面的工作不就是为了后期的迭代方便吗

比如添加一个dialog加载框,首先先添加两个回调方法



然后统一在observer里调用接口方法



只需要在presenter层的回调的统一调用就行了,在view层完全不用理会,而且逻辑的控制也能很好的添加,然后在view层实现方法,在方法里去调用dialog的show方法



至于这里的dialog是自己自定义了一个简单的progress控件,然后在base里面去操作的,这样在view加载的时候直接调用方法就行了,这里是和空页面一起操作的,空页面有专门写,在上一篇



效果如下图



GitHub:https://github.com/1024477951/FragmentApp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: