gpt4 book ai didi

android - Firebase 处理断开与数据库的连接

转载 作者:行者123 更新时间:2023-11-29 01:16:20 38 4
gpt4 key购买 nike

我不确定是断开连接还是 DatabaseErrors 事件。首先,当开始在 Firebase 上加载数据时,我有一个对话框显示,然后我想在两种情况下关闭该对话框:

  1. 有互联网:加载数据成功,我关闭了 onDataChange 中的对话框。

  2. 应用程序启动时没有互联网连接或快速关闭 wifi。

在第二种情况下,我认为它会调用 onCancelled,在那个方法中,我会关闭对话框。但实际上,它不是调用 onCancelled。

那么,我该如何关闭第二种情况下的对话。这是我的代码

private void getCategory() {
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child(ReferenceToFirebase.CHILD_CATEGORIES)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//do something

//then dismiss dialog
mDialog.dismiss();
}

@Override
public void onCancelled(DatabaseError databaseError) {
mDialog.dismiss();
}
});
}

最佳答案

onCancelled() 在服务器拒绝监听器时调用,通常是在用户无权访问数据时调用。

如果您没有连接到 Firebase 数据库,您可能希望阻止附加监听器。为此你可以 listen to .info/connected并且仅在为真时附加监听器。

mDatabase = FirebaseDatabase.getInstance().getReference();
DatabaseReference connectedRef = mDatabase.child(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
mDatabase.child(ReferenceToFirebase.CHILD_CATEGORIES)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//do something

//then dismiss dialog
mDialog.dismiss();
}

@Override
public void onCancelled(DatabaseError databaseError) {
System.err.println("Listener was cancelled");
mDialog.dismiss();
}
});
} else {
System.out.println("not connected");
mDialog.dismiss();
}
}

@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});

关于android - Firebase 处理断开与数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358744/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com