我有一个问题,我的数据获取正在另一个线程上运行,而剩下的代码要执行。有没有一种方法可以在onDataChanged方法内部使用return语句来返回布尔父方法? 反对创建两个线程,让一个线程等待另一个线程。
else {
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot businessSnapshot : dataSnapshot.getChildren()) {
final String tempBus = businessSnapshot.getKey();
Log.d("myTagEmails", "Business is: " + tempBus);
childReference = databaseReference.child(tempBus).child("z_businessLogin").child("email");
childReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String tempEmail = dataSnapshot.getValue(String.class);
Log.d("myTagEmails", "Email is: " + tempEmail);
if (tempEmail.equalsIgnoreCase(email)) {
return false; //I would like to use this for the parent boolean method
} else {
Log.d("myTagEmails", "does not match");
return true; // or this one
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
答案 0 :(得分:0)
无法在监听器中返回
要解决此顺序调用问题,可以尝试以下方法之一:
使用Observer-pattern对象类型(例如Observable或LiveData)来保持第一个任务的状态。当第一个任务完成时,它会更改状态对象的值,然后该对象将通知观察者,以便他们知道何时执行第二个任务
定义一个具有onDone()回调方法的侦听器接口,在要调用第二个任务的地方实现它,将其实例传递给第一个任务,触发onDone()