toi*_*345 3 java android firebase firebase-realtime-database
例如,如果数据存在则在圆圈中搜索用户圈我希望它处理过程1并且如果数据不存在我希望它创建一个然后DO过程2 ...但是如果数据不存在则会在此代码中发生什么存在它将创建一个然后执行过程2然后返回然后检查后执行过程1.所以如何在进程2之后停止监听器.对不起,如果圆圈示例太模糊,但这是我能想到的最简单的例子.
Firebase ref= new Firebase("https://XXXXX.firebaseio.com/circles/");
Query queryRef = ref.orderByChild("circalename").equalTo(user.circalename);
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot datasnapshot) {
if (datasnapshot.exists()) { // I don't want to get back here after
//creating the data in the else statement
// DO process 1
}
// if my data doesnt exist I will create one after that STOP listening
else {
// create circle
// do process 2
}
}
Run Code Online (Sandbox Code Playgroud)
你能做的就是用 addListenerForSingleValueEvent
因为它只听一次事件
即在你的情况下
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if (datasnapshot.exists()) {
// code if data exists
} else {
// code if data does not exists
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
尽管Shubham Arora 的答案是这种情况下的最佳解决方案,但我将向您展示如何使用这两个非常简单的解决方案来完全满足您的要求:
booleanboolean并在满足条件后更改它:
query.addListenerForSingleValueEvent(new ValueEventListener() {
boolean processDone = false;
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists() && !processDone) {
// do process 1
} else {
// do process 2
processDone = true;
}
}
@Override public void onCancelled(DatabaseError databaseError) {}
});
Run Code Online (Sandbox Code Playgroud)
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// do process 1
} else {
// do process 2
query.removeEventListener(this);
}
}
@Override public void onCancelled(DatabaseError databaseError) {}
});
Run Code Online (Sandbox Code Playgroud)
当我使用时,这两种解决方案对我来说都很好用,ChildEventListener而Shubham Arora 的回答也无济于事。
| 归档时间: |
|
| 查看次数: |
7944 次 |
| 最近记录: |