【问题标题】:Firebase OnSuccessListener in offline mode离线模式下的 Firebase OnSuccessListener
【发布时间】:2020-04-15 23:43:27
【问题描述】:

在 Firebase 中addOnSuccessListener 方法会在应用处于在线模式时被调用。但在离线模式时不调用。以下是我的代码:

mFirebaseDatabase.setValue(newAreaModel)
    .addOnSuccessListener(new OnSuccessListener<Void>()
    {
        @Override
        public void onSuccess(Void aVoid)
        {
            finish();
        }
    })
    .addOnFailureListener(new OnFailureListener()
    {
        @Override
        public void onFailure(@NonNull Exception e)
        {
            Toast.makeText(getApplicationContext(), "Something went Wrong!", Toast.LENGTH_SHORT).show();
        }
    });

现在我想在离线模式下调用setValue() 方法时完成活动。

谁能建议我怎么做?

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    当网络连接丢失时(用户设备上没有网络连接),onSuccess()onFailure() 方法都不会被触发。这一直是 Firebase 实时数据库中的行为。只有在 Firebase 服务器上提交的写入才会被视为成功或失败,在此之前它们处于挂起状态。

    现在我想在离线模式下调用 setValue() 方法时完成活动。

    不幸的是,据我所知,当数据写入本地队列时没有触发事件。

    【讨论】:

    • [WorkPlaceRef. add (DATA).addOnCompleteListener({...})..addOnFailureListener(..);] / addOnFailerListner 在没有网络连接时不会触发。但是 [WorkPlaceRef 。 get (DATA).addOnCompleteListener({...})..addOnFailureListener(..);] FailureListener 在没有网络连接的情况下工作正常。你知道原因吗?
    • @IsuruBandara 我不确定我是否理解您的问题,我建议您使用自己的MCVE 发布一个新问题,以便我和其他 Firebase 开发人员可以帮助您。
    • 是的,我创建了一个问题 :) (stackoverflow.com/questions/64835933/…)
    【解决方案2】:

    根据 Firebase 大师Frank van Puffelen

    当数据写入本地队列时,不会触发任何事件。

    https://stackoverflow.com/a/46014750/8518676

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 2022-01-18
      • 2019-10-24
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多