首页 > 解决方案 > 为什么 onNext() 正在更新 textview,尽管在不同的线程上观察 On(Schedulars.io())?

问题描述

Observable.range(11,10).subscribeOn(Schedulers.io())
            .observeOn(Schedulers.io())
            .subscribe(new Observer<Integer>() {
                @Override
                public void onSubscribe(@NonNull Disposable d) {

                }

                @Override
                public void onNext(@NonNull Integer integer) {
                    textView.setText(String.valueOf(integer));
                    Log.d(TAG, "onNext: "+Thread.currentThread().getName());
                }

                @Override
                public void onError(@NonNull Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });

onNext() 应该在单独的线程上运行,但它如何更新主线程上的 textview?

标签: androidrx-java2rx-android

解决方案


如果您使用数据绑定库,它允许从主线程更新 UI

只要不是集合,您就可以在后台线程中更改数据模型。数据绑定在评估期间本地化每个变量/字段以避免任何并发问题。


推荐阅读