2017-12-30 19 views
0

Ich habe CompositeSubscription in meinem Fragment in onActivityCreated. Nachdem ich die Zeichenfolge in EditText geändert habe, gibt mein Code in mViewModel Observable aus.Observable ist nach der Rückkehr von der nächsten Aktivität nicht abonniert.

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)); 

Methode in meinem mViewModel

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

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

Link-Fragment zu vervollständigen Code https://github.com/eurosecom/samfantozzi/blob/masterAS3/app/src/main/java/com/eusecom/samfantozzi/NewCashDocFragment.java

Wenn ich Activityfragment starten, funktioniert der Code richtig, und ich abonnieren beobachtbar sind. Wenn ich startActivityForResult nächste Aktivität starte und zu Activityfragment zurückkehre, kann ich Observable nicht abonnieren.

Es scheint wie nach der Rückkehr mein Observable ist auf einem anderen Thread.

Warum kann ich Observable nicht nach der Rückkehr von der nächsten Aktivität abonnieren?

+0

Post mehr Code, wo ist das erste Snippet aus aufgerufen? und wie löschen Sie die CompositeSubscription – elmorabea

+0

@elmorabea ersten Snippet wird in OnActivityCreated-Methode des Fragments aufgerufen. Es scheint, als wäre mein Observable nach der Rückkehr auf einem anderen Thread. – eurosecom

+0

In 'onDestroy' rufen Sie' clear() 'auf den Composites auf, statt' unsubscribe'/'dispose'. – akarnokd

Antwort

0

Ich habe das Erstellen und Subskribieren von Observable von Methode onActivityCreated zu Methode onResume und Abmelde Observable zu Methode onPause verschoben. Beobachtbar wird bei jeder Rückkehr von der nächsten Aktivität neu initialisiert.

@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)); 
} 
Verwandte Themen