オブジェクト(都市)を受け取って、このデータを別のスレッド(モバイル画面に反映してこの都市をDBに保存)に送りたい。これは私のコードです:別のスレッドでonNextを呼び出す(RxJava Android)
private CompositeSubscription subscriptions;
...
@Override
public void onAddButtonClick(String cityName) {
Observable<City> obs = repository.getCity(cityName);
if (obs != null){
Subscription subscription = obs
.subscribeOn(backgroundThread)
.observeOn(mainThread)
.subscribe(
city -> {
view.cityExists();
repository.saveCityToDb(city);
}
);
subscriptions.add(subscription);
} else {
view.showCouldNotFindCity();
}
}
@Override
public void subscribe() {
subscriptions = new CompositeSubscription();
}
@Override
public void unsubscribe() {
subscriptions.clear();
}
だから私は、バックグラウンドスレッドでUIスレッドとrepository.saveCityToDb(city);
上で実行したいview.cityExists();
この方法。どうしたらいいですか? Observable<City>
を返しgetCity(...);
方法:これはトリックを行う必要があります
はpublic Observable<City> getCity(String name){
return fileRepository.getCityFromFile(name);
}
正しいことをしているのかどうかわかりませんが、書き込みすると動作します。リポジトリ:: saveCityToDb(.flatMap(city - > repository: :saveCityToDb))、saveCityToDb()から都市オブジェクトを返しませんが、Observableを返します。これはsaveCityToDb()です: public Observable saveCityToDb(都市){ return Observable.just(city); } –
alla
あなたの提案に基づいて私の答えを修正しました。 –