Skip to content

Instantly share code, notes, and snippets.

@andych008
Last active May 26, 2017 13:40
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andych008/8d9086c4527a70927660e02f318fe1b7 to your computer and use it in GitHub Desktop.
Save andych008/8d9086c4527a70927660e02f318fe1b7 to your computer and use it in GitHub Desktop.
显示并隐藏loading
/**
* 显示并隐藏loading
*/
@SuppressWarnings("unchecked")
public static <T> Observable.Transformer<T, T> showLoading(final ILoading loading) {
return new Observable.Transformer<T, T>() {
@Override
public Observable<T> call(Observable<T> observable) {
return observable
.doOnSubscribe(new Action0() {
@Override
public void call() {
loading.showLoading();
}
}).subscribeOn(AndroidSchedulers.mainThread())
.doOnTerminate(new Action0() {
@Override
public void call() {
loading.hideLoading();
}
}).observeOn(AndroidSchedulers.mainThread());
}
};
}
/**
* Created by Andy on 4/7/2016.
*/
public interface ILoading {
void showLoading();
void hideLoading();
}
@Override
public void showLoading() {
showLoading(getString(R.string.loading));
}
@Override
public void hideLoading() {
Observable.empty()
.observeOn(AndroidSchedulers.mainThread())
.doOnTerminate(new Action0() {
@Override
public void call() {
//todo
}
})
.subscribe();
}
public void showLoading(String tip) {
Observable.just(tip)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
//todo
}
});
}
model.update()
.compose(RxUtils.<XXX>showLoading(MainActivity.this))
.subscribe();
@Kolyall
Copy link

Kolyall commented May 26, 2017

Seems you need to use it in loading.java :

 return observable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.io())
                        .doOnSubscribe(new Action0() {
                            @Override
                            public void call() {
                                loading.showLoading();
                            }
                        })
.observeOn(AndroidSchedulers.io())
                        .doOnTerminate(new Action0() {
                            @Override
                            public void call() {
                                loading.hideLoading();
                            }
});

because you use .observeOn(AndroidSchedulers.mainThread()) in

 Observable.just(tip)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        //todo
                    }
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment