小编sam*_*33r的帖子

使用copyFromRealm发送副本时,Realm访问错误的线程异常

当流式处理领域对象的副本而不是领域引用并在Schedulers.IO线程上观察它时,会发生着名的异常消息"Realm从不正确的线程访问."Realm对象只能在它们创建的线程中访问.

该副本不应该是无线程的吗?我可以从一个线程生成它并在不同的线程上处理它吗?

这就是我创建可观察的方式.

 public Observable<Brand> getAllBrands() {
    return realm.where(Brand.class)
            .findAll()
            .asObservable()
            .flatMap(Observable::from)
            .map(brand -> realm.copyFromRealm(brand));
}
Run Code Online (Sandbox Code Playgroud)

以下是我观察getAllBrands()的方法.

 Observable<Brand> brandObservable = dataManager.getAllBrands();

    brandObservable.observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(new Observer<Brand>() {
                @Override
                public void onCompleted() {
                    Log.d("reactive", "completed");
                }

                @Override
                public void onError(Throwable e) {
                    Log.d("reactive", e.getMessage());
                }

                @Override
                public void onNext(Brand brand) {
                    dataSource.add(brand.getName());
                    myAdapter.notifyDataSetChanged();
                }
            });
Run Code Online (Sandbox Code Playgroud)

java multithreading android realm rx-java

6
推荐指数
2
解决办法
2133
查看次数

标签 统计

android ×1

java ×1

multithreading ×1

realm ×1

rx-java ×1