簡體   English   中英

RxAndroid-BehaviorSubject在onNext上不發出

[英]RxAndroid - BehaviorSubject not emitting on onNext

我正在嘗試使用MVVM模式學習RXJava。

這是我嘗試實現的方案:

在某些搜索事件上,我正在調用SearchViewModel.handleSearchTopic(),該事件正在發出列表,但由於某種原因它沒有被觀察者的onNext事件捕獲。 訂閱也成功進行。 我想我在犯一些簡單的錯誤,請指出這一點。 另外,有沒有更好的方法來實現此用例?

SearchViewModel.java

private final BehaviorSubject<List<Topic>> topicList = BehaviorSubject.create();

public void handleSearchTopic() {
    List<Topic> list = //getsomehow;
    topicList.onNext(list);
}

public Observable<List<Topic>> getTopicListObservable() {
    return topicList.asObservable();
}

Fragment.java

@NonNull
private CompositeSubscription subscription;

@NonNull
private SearchViewModel searchViewModel;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    searchViewModel = new SearchViewModel();
    bind();
}

@Override
public void onDestroy() {
    unBind();
    super.onDestroy();
}

private void bind() {
    subscription = new CompositeSubscription();

    subscription.add(searchViewModel.getTopicListObservable()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<Topic>>() {
                @Override
                public void onCompleted() {
                    //do something
                }

                @Override
                public void onError(Throwable e) {
                    //do something

                }

                @Override
                public void onNext(List<Topic> topics) {
                    //ideally this should be called when event is emitted but not getting called

                }
            }));

}

private void unBind() {
    subscription.unsubscribe();
}

這是一個愚蠢的錯誤。 我在片段和搜索事件中使用SearchViewModel的不同實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM