手を伸ばす党福祉:Rxjava Subscriberネットワークアクセスコールバックパッケージ
4857 ワード
あなたはまだこのようにネットの要求を書いていますか(それではあなたは遠くに行きます):
ここでviewはMVPモードにおけるactivity/fragmentのインタフェースである
そうです.このように使います.
どういたしまして、使えますから、持って行ってください.いいねをつけるのを忘れないで!
view.showProgress();
subscription = Order().search(new ParamsBuilder().put("xxxxx","xxxxx").build())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1() {
@Override
public void call(Response response) {
view.hideProgress();
if (response.isSuccess())
view.xxxxxxxxxx(response.getList());
else view.showError(response.getMsg());
}
}, new Action1() {
@Override
public void call(Throwable e) {
e.printStackTrace();
view.hideProgress();
view.showErrorMessage(e.getMessage());
}
});
xxxxx.addSubscription(subscription);
ここでviewはMVPモードにおけるactivity/fragmentのインタフェースである
私がカプセル化したコード:
/**
* the base response callback entity
* Created by deadline on 16/8/8.
*
* onFinish()
*/
public abstract class OnRequestCallback extends Subscriber {
public abstract void onFailed(int code, String message);
public abstract void onException(String message);
public abstract void onResponse(T response);
public abstract void onFinish();
@Override
public void onStart() {
if (!NetUtil.isConnected()){
onFailed( -1, App.getContext().getString(R.string.network_unavailable));
onFinish();
unsubscribe();
return;
}
}
@Override
public final void onCompleted() {
onFinish();
}
@Override
public final void onError(Throwable e)
{
onException(e.getMessage());
onFinish();
}
@Override
public final void onNext(T response)
{
if(response.isSuccess())
{
onResponse(response);
}else {
onFailed(response.getCode(), response.getMessage());
}
}
}
/**
* ,
* ,
* abstract .
* T.showLong(); toast
* Created by deadline on 16/8/8.
*/
public abstract class OnSimpleRequestCallback extends OnRequestCallback {
@Override
public void onStart() {
super.onStart();
}
@Override
public void onFinish() {
};
@Override
public void onFailed(int code, String message){
T.showLong(message);
};
@Override
public void onException(String message){
T.showLong(message);
};
}
/**
*
*
* onResponse/onFailed/onException BaseView.finish
* activity , OnProgressRequestCallback view,
* , , finish activty
* OnProgressRequestCallback.onFinish ,
* , WeakReference.
*
* Created by deadline on 16/8/8.
*/
public abstract class OnProgressRequestCallback
extends OnSimpleRequestCallback{
private WeakReference reference;
public OnProgressRequestCallback(BaseView baseView){
reference = new WeakReference(baseView);
}
/**
*
*/
@Override
public void onStart() {
reference.get().showProgress();
super.onStart();
}
/**
* onFinish()
*/
@Override
public void onFinish() {
reference.get().hideProgress();
}
}
使用方法:
そうです.このように使います.
エラー/異常注意に関心を持つ必要はありません。
ネットワークが接続されていないことに関心を持つ必要はありません。
progressDialog表示の非表示に関心を持つ必要はありません。
どういたしまして、使えますから、持って行ってください.いいねをつけるのを忘れないで!
xxxxx
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new OnProgressRequestCallback(mView) {
@Override
public void onResponse(Response response) {
}
});
Responseクラス:
public class Response {
private String message;
private int code;
public boolean isSuccess(){
return code == 0;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public void setCode(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}