2017-12-30 46 views
0

onActivityCreated의 조각에 CompositeSubscription이 있습니다. EditText에서 문자열을 변경 한 후 mViewModel의 코드가 Observable을 방출합니다. 내가 Activityfragment를 시작하면 내 mViewModel에서Observable이 다음 활동에서 돌아온 후에 구독하지 않았습니다.

mSubscription = new CompositeSubscription(); 
    mSubscription.add(mViewModel.getMyObservableIdModelCompany() 
      .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread()) 
      .doOnError(throwable -> { Log.e(TAG, "Error NewCashDocFragment " + throwable.getMessage()); 
       hideProgressBar(); 
       Toast.makeText(getActivity(), "Server not connected", Toast.LENGTH_SHORT).show(); 
      }) 
      .onErrorResumeNext(throwable -> empty()) 
      .subscribe(this::setIdCompanyKt)); 

방법

public Observable<List<IdCompanyKt>> getMyObservableIdModelCompany() { 

    return mObservableIdModelCompany 
      .observeOn(mSchedulerProvider.computation()) 
      .flatMap(queryx -> mDataModel.getObservableIdModelCompany()); 
} 

링크 조각 코드 https://github.com/eurosecom/samfantozzi/blob/masterAS3/app/src/main/java/com/eusecom/samfantozzi/NewCashDocFragment.java

를 완료하기 위해, 코드는 잘 작동하고 내가 관찰 가능한 가입. startActivityForResult next Activity를 시작하면 Activityfragment로 돌아가서 Observable을 구독 할 수 없습니다.

반환 후 내 Observable이 다른 스레드에있는 것 같습니다.

왜 다음 활동에서 돌아온 후에 Observable을 구독 할 수 없습니까?

+0

더 많은 코드를 게시하십시오. 첫 번째 스 니펫은 어디에서 왔습니까? 어떻게 CompositeSubscription – elmorabea

+0

@ elmorabea의 첫 번째 스 니펫이 onActivityCreated 메소드 조각에서 호출되는지 확인합니다. 그것은 Observable이 다른 실에있는 것처럼 보입니다. – eurosecom

+0

'onDestroy'에서는 복합체에서'unsubscribe' /'dispose' 대신'clear()'를 호출합니다. – akarnokd

답변

0

onActivityCreated 메소드에서 작성 및 등록 Observable을 onResume 메소드로 이동하고 Observable Observable을 onPause 메소드로 등록 취소했습니다. 관찰 가능한 것은 다음 활동에서 돌아올 때마다 다시 초기화하는 것입니다.

@Override 
public void onResume() { 
    super.onResume(); 
    bind(); 
    mSubscription = new CompositeSubscription(); 
    mSubscription.add(mViewModel.getMyObservableIdModelCompany() 
      .subscribeOn(Schedulers.computation()) 
      .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread()) 
      .doOnError(throwable -> { Log.e(TAG, "Error NewCashDocFragment " + throwable.getMessage()); 
       hideProgressBar(); 
       Toast.makeText(getActivity(), "Server not connected", Toast.LENGTH_SHORT).show(); 
      }) 
      .onErrorResumeNext(throwable -> empty()) 
      .subscribe(this::setIdCompanyKt)); 
}