首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用Subscriber.onStart

正确使用Subscriber.onStart
EN

Stack Overflow用户
提问于 2015-09-09 13:21:06
回答 1查看 503关注 0票数 2

我正在考虑使用Subscriber.onStart来显示一个进度指示器,然后隐藏在onCompleted中。

代码语言:javascript
复制
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是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 21:23:34

我认为,如果您对延迟订阅的效果感到满意,这对于onStart来说是可以接受的。

另一种选择可能是在订阅之前向MySubscriber添加一个MySubscriber方法并调用它,甚至在MySubscriber的构造函数中调用您的初始化逻辑(尽管您必须注意这种用法,以避免对self的引用)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32480737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档