gpt4 book ai didi

Android Firebase - "onDataChange"和 "onCancelled"没有被调用没有互联网连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:17 26 4
gpt4 key购买 nike

在我的应用程序中,我只是尝试通过在以下代码中添加 ListenerForSingleValueEvent 从我的 Firebase 数据库中检索阅读文章:

myRef.child("passages").child(passageNum).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("ON DATA CHANGE");
}

@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("DATABASE ERROR");
FirebaseErrorHandler.handleDatabaseError(databaseError.getCode(), ReadingActivity.this);
}

});

当有互联网连接时,它工作得很好。但是,当我故意关闭互联网连接时,onDataChangeonCancelled 都不会被调用。这非常令人沮丧,因为 databaseError.getCode() 中的两个错误代码与网络连接问题有关。

如果由于没有互联网而无法获取此数据,我想至少让用户知道这一点,而不是让这个监听器随着屏幕不断加载而挂起。有办法解决这个问题吗?我是否必须求助于 Firebase 的 REST API?至少对于 RESTful 网络请求,它们会让您知道连接是否失败。

最佳答案

Firebase 将数据事件流(例如 onDataChange())与可能发生的其他事情分开。它只会在服务器端有理由这样做时调用onCancelled(目前仅当客户端没有访问数据的权限时)。没有理由取消监听器,只是因为没有网络连接。

您似乎在寻找一种方法来检测是否存在网络连接(这不是特定于 Firebase 的任务)或用户是否已连接到 Firebase 数据库后端。后者可以通过将监听器附加到 .info/connected 来完成,这是一个隐式 bool 值,当您连接到 Firebase 数据库后端时为 true 并且是false 否则。请参阅 document on detecting connection state 中的部分了解全部详情。

关于Android Firebase - "onDataChange"和 "onCancelled"没有被调用没有互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021378/

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