2016-10-01 6 views
1

영역은 웹 서비스를 관찰 할 것이며 UI에 대해 관찰 가능할 것입니다.렐름을 옵저버로 만들 수 있습니까?

protected <T> void subscribe(Observable<T> observable, Observer<T> observer){ 
     Subscription subscription = observable 
       .subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .unsubscribeOn(Schedulers.computation()) 
       .subscribe(observer); 
     configureSubscription().add(subscription); 
    } 

답변

0

대하여 반응성 패턴, 발표자

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(); 
    } 
+0

언제 탈퇴 하시겠습니까? – EpicPandaForce

+0

@EpicPandaForce, onDestroy는 –

+1

이라고 부릅니다. P는'begin/commit' 대신'executeTransaction()'사용을 고려합니다. – EpicPandaForce