我考虑使用Subscriber.onStart来显示进度指示器,然后将其隐藏在onCompleted中。
private class MySubscriber extends Subscriber<Boolean> {
@Override
public void onCompleted() {
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onError(Throwable throwable) {
mProgressBar.setVisibility(View.GONE);
}
@Override
public void onNext(Boolean aBool) {
}
@Override
public void onStart() {
mProgressBar.setVisibility(View.VISIBLE);
}
}
关于这一点的好处是进度指示器完全耦合到订户的生命周期。我不完全确定这是否是这种方法的预期用法。 javadocs只提到背压和&#34;有用的初始化&#34;。我用这种方法看到的一个问题是,如果我观察到的Observable恰好在某个地方有delaySubscription,那么onStart
就不会被调用,直到延迟,如果它是一个进度指示器就不好。
另一种方法是在订阅Observable之前显示进度指示器。这有效,但分散了进度指示器的责任。
为此使用onStart
是否正确?