我正在考虑使用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只提到了背压和“有用的初始化”。我在这种方法中看到的一个问题是,如果我观察到的可观察到的delaySubscription碰巧有一个onStart,那么在延迟之后才会调用onStart,如果它是进度指示符,那就不好了。
另一种办法是在订阅可观测指标之前先显示进度指标。这是可行的,但将进度指标的责任分散到了周围。
为此使用onStart是正确的吗?
发布于 2015-09-09 21:23:34
我认为,如果您对延迟订阅的效果感到满意,这对于onStart来说是可以接受的。
另一种选择可能是在订阅之前向MySubscriber添加一个MySubscriber方法并调用它,甚至在MySubscriber的构造函数中调用您的初始化逻辑(尽管您必须注意这种用法,以避免对self的引用)。
https://stackoverflow.com/questions/32480737
复制相似问题