【发布时间】:2017-08-24 13:45:32
【问题描述】:
我正在为我的项目使用 fernando cejas 的干净的 android 样板代码,并且 在我的项目中实现firebase实时数据库但是,当我调试我的代码时,我看到我的发射器是 DISPOSED 每次 onDataChange() 被调用(当我向我的firebase数据库添加新行时),我的UI 没有呈现新的列表内容,这是我的数据模块代码,有什么建议吗?
@Override
public Observable<List> signalEntityList() {
Firebase myFirebaseRef = new Firebase("https://mydatabase.firebaseio.com/");
return Observable.create(emitter -> {
if (isThereInternetConnection()) {
myFirebaseRef.child("signal").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
List<SignalEntity> list = new ArrayList<>();
Iterable<DataSnapshot> snapshotIterable = snapshot.getChildren();
Iterator<DataSnapshot> iterator = snapshotIterable.iterator();
while (iterator.hasNext()) {
SignalEntity signalEntity = iterator.next().getValue(SignalEntity.class);
list.add(signalEntity);
}
emitter.onNext(list);
emitter.onComplete();
}
@Override
public void onCancelled(FirebaseError error) {
emitter.onError(new FirebaseException(error.getMessage()));
}
});
} else {
emitter.onError(new NetworkConnectionException());
}
});
}
【问题讨论】:
-
您在数据更改时致电
emmitter.onComplete。我认为 observable 在完成后就被释放了。 -
先生,我认为问题已经解决了。非常感谢你,节省了很多时间。
-
@masp ,请您写下您的评论作为答案,我会接受您的回复作为已接受的答案。谢谢。
-
不客气。检查此question。还有很多库试图将 Rxjava 与 firebase 结合起来。您的代码最重要的问题是您在处理可观察对象时不会删除值侦听器。
标签: android rx-java2 clean-architecture