Android中封装网络请求时的提示框
参考:
Android中封装通用页面逻辑-优快云博客中的BasLogicActivity
关键代码
/**
* 显示加载对话框
*/
public void showLoading() {
showLoading(getString(R.string.loading));
}
/**
* 显示加载对话框
*/
public void showLoading(int data) {
showLoading(getString(data));
}
/**
* 显示加载对话框
*/
public void showLoading(String message) {
if (loadingWeakReference == null || loadingWeakReference.get() == null) {
loadingWeakReference = new WeakReference<>(
SuperRoundLoadingDialogFragment.newInstance(message)
);
}
SuperRoundLoadingDialogFragment dialog = loadingWeakReference.get();
if (dialog.getDialog() == null || !dialog.getDialog().isShowing()) {
dialog.show(getSupportFragmentManager(), "SuperRoundLoadingDialogFragment");
}
}
/**
* 隐藏加载对话框
*/
public void hideLoading() {
SuperRoundLoadingDialogFragment dialog = loadingWeakReference.get();
if (dialog != null) {
dialog.dismiss();
loadingWeakReference.clear();
}
loadingWeakReference = null;
}
public HttpObserver(BaseLogicActivity activity, boolean isShowLoading) {
super();
this.activity = activity;
this.isShowLoading = isShowLoading;
}
/**
* 请求结束,成功失败都会调用(调用前调用),使用在这里隐藏加载提示
*/
public void onEnd() {
if (isShowLoading) {
activity.hideLoading();
}
}
/**
* 开始网络请求前
*
* @param d
*/
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
if (isShowLoading) {
//显示加载对话框
activity.showLoading();
}
if(getPlaceholderView()!=null){
SuperViewUtil.gone(getPlaceholderView());
}
}
使用
DefaultRepository.getInstance()
.sheetDetail(id)
.to(autoDisposable(AndroidLifecycleScopeProvider.from(this)))
.subscribe(new HttpObserver<DetailResponse<Sheet>>(getHostActivity(), true) {
@Override
public void onSucceeded(DetailResponse<Sheet> data) {
showData(data.getData());
}
});
通过new HttpObserver<DetailResponse>(getHostActivity(), true) 这个boolean值判断是否显示加载提示框