[英]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.