Região, operações de rede, assinando e observando em diferentes threads com o RxJava

Eu preciso :

Buscar alguns dados de uma API em um encadeamento em segundo planoExibir os dados na interface do usuário

Salvar no reino.

fetchItemsFromServer().subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<ItemList>() {
    @Override
    public void call(ItemList items) {

        displayItems(items);

        try {
            realm.beginTransaction();
            realm.copyToRealmOrUpdate(itemList);
            realm.commitTransaction();
            Logger.v("Realm ", "Copied list object to realm");
        } catch (Exception e) {
            Logger.e("Realm Something went wrong ", e);
            realm.cancelTransaction();
        }

    }
}

Isso gera um erro:região acessada a partir de encadeamento incorreto

Eu tenho quatro guias buscando mensagens diferentes ao mesmo tempo.

fetchItemsFromServer () é uma chamada intensiva e limitar essa chamada a um thread não é bom. Eu preciso dessa flexibilidade.

Alguém encontrou soluções alternativas usando o domínio dessa maneira?

A maioria dos exemplos, por exemplo, tende a concentrar-se na busca do Reino versus trabalho com operações de rede:

Exemplo abaixo:

Rxjava -https://realm.io/news/realm-java-0.87.0/

Usando domínio com RxJava -https://realm.io/news/using-realm-with-rxjava/ (solução anterior, mas desvantagens de desempenho)

Meu Reino é fornecido por um módulo de banco de dados através de injeção de dependência (Dagger 2)

@Module
public class DatabaseModule {

    public static final String REALM_FILE_NAME = "Realm name";

    @Provides
    Realm providesRealmInstance(Context context) {
    return Realm.getInstance(
            new RealmConfiguration.Builder(context)
                    .name(REALM_FILE_NAME)
                    .build());
    }
}

questionAnswers(1)

yourAnswerToTheQuestion