首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewRootImpl$CalledFromWrongThreadException rxjava setVisibiltiy通过rxjava

ViewRootImpl$CalledFromWrongThreadException rxjava setVisibiltiy通过rxjava
EN

Stack Overflow用户
提问于 2020-01-03 20:02:40
回答 1查看 44关注 0票数 0

大家好,现在我对RXJava中的线程有一个问题。我想通过rxjava设置可见,但是android会抛出一个异常。

"ViewRootImpl$CalledFromWrongThreadException“

代码语言:javascript
复制
Disposable disposable = Single.concat(
            getClearStorageObservable()
                    .doOnError(Timber::e)
                    .onErrorResumeNext(Single.just(false)),
            getDownloadObservable())
            .subscribeOn(schedulers().io())
            .observeOn(schedulers().ui())
            .delay(DELAY_VALUE,TimeUnit.SECONDS)
            .timeout(5, TimeUnit.SECONDS)
            .subscribe(status -> hideErrorInformation(),
                    error -> showErrorInformation()
            );
    disposables().add(disposable);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 08:37:22

您在delay之后应用了observeOn,因此流被从UI线程中切换开。删除observeOn并按以下方式重新排序流:

代码语言:javascript
复制
Disposable disposable = Single.concat(
        getClearStorageObservable()
                .doOnError(Timber::e)
                .onErrorResumeNext(Single.just(false)),
        getDownloadObservable())
        .subscribeOn(schedulers().io())
        .timeout(5, TimeUnit.SECONDS, schedulers().ui())
        .delay(DELAY_VALUE, TimeUnit.SECONDS, schedulers().ui())
        .subscribe(status -> hideErrorInformation(),
                error -> showErrorInformation()
        );
disposables().add(disposable);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59584675

复制
相关文章

相似问题

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