反応パターン、プレゼンター
resume()
からの最初の呼び出し:
public void fetchCompanies(Context context) {
unsubscribeAll();
if (Utils.isNetworkAvailable(context)) {
subscribe(mCompanyViewListener.getCompanies(), this);
} else {
Realm realm = Realm.getDefaultInstance();
realm.where(Company.class).findAll().asObservable()
.map(new Func1<RealmResults<Company>, Observable<Result<Company>>>() {
@Override
public Observable<Result<Company>> call(RealmResults<Company> companies) {
Result<Company> companyResult = new Result<>();
companyResult.setValue(companies);
return Observable.just(companyResult);
}
}).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Observable<Result<Company>>>() {
@Override
public void call(Observable<Result<Company>> companyResult) {
subscribe(companyResult, CompanyPresenter.this);
}
});
}
}
秒、サービス
@Override
public void onCompanies(Result<Company> companies) {
realm.beginTransaction();
realm.insertOrUpdate(companies.getValue());
realm.commitTransaction();
mCompanyAdapter.addCompanies(realm.where(Company.class).findAll());
mProgressDialog.dismiss();
}
に観測可能であるが脱退
@Override
public void onDestroy() {
unsubscribeAll();
}
いつ退会しますか? – EpicPandaForce
@EpicPandaForce、onDestroyは –
と呼ばれています。Pは 'begin/commit'の代わりに' executeTransaction() 'を使うことを検討します – EpicPandaForce