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árioSalvar 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());
}
}