【问题标题】:How to disable Firebase cache (Persistence) in Android?如何在 Android 中禁用 Firebase 缓存(持久性)?
【发布时间】:2018-02-18 05:47:30
【问题描述】:

重启应用后,Firebase 正在加载本地缓存的数据。如何删除这些本地缓存的数据并仅检索新数据?

我了解到 Firebase 默认提供 10Mb 的缓存。我想如果我们能找到一种方法来禁用这个默认缓存,问题可能会得到解决。

参考:https://firebase.google.com/docs/database/android/offline-capabilities

以下是重启代码

    finish();
    //System.exit(0);
    startActivity(new Intent(getApplicationContext(),GAME.class));

下面是监听器

 final DatabaseReference LC = FirebaseDatabase.getInstance().getReference("XYZ");
 LC.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {


            if( dataSnapshot.getKey().equals("XX")) {
                String value = dataSnapshot.getValue(String.class);
                XX= value;
                Toast.makeText(GAME.this,"XX:"+XX, Toast.LENGTH_SHORT).show();

                if(XX.equals("Match"))
                    tableManager(0); //new Table
                else
                    tableManager(1); //old Table
            }
        }
.....

【问题讨论】:

  • 我也遇到了同样的问题,但问题不是缓存数据,而是同步不够具体。尝试改进“keepSynced(false);”让我们看看这是否有效
  • 我试过 LC.keepSynced(false);它也不起作用。 :(
  • 每次同步都必须在执行任何数据库操作之前完成,最好的方法是在应用程序类中执行,这有什么帮助吗?
  • 我看不懂,能否请您发布示例代码语句?

标签: android firebase firebase-realtime-database firebase-storage


【解决方案1】:

也许问题是:

  1. 要同步的节点必须是特定的
  2. 必须在任何数据库事务之前完成同步,一个很好的方法是在 Application 类中

要创建一个应用程序类,请创建一个extendsapplication 类的类,然后在清单中使用name 标记将其注册为您的自定义应用程序类。

public class CustomApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
        //Here keep everything sync with the keepSynced(true) method
    }
}

在清单中

<application
    android:name=".some.package.CustomApp">

【讨论】:

  • 如何访问 AppCompatActivity? activity_main.xml ?
  • 你不必,这发生在创建应用程序时,即在创建任何活动之前
  • OK 在我的应用程序中插入此代码。现在我应该在某个地方调用 CustomApp 还是只运行代码?
  • 在清单中,通过使用“名称”标签,您定义了使用的应用程序类,如果没有,则使用默认类
  • 是的,我做到了,但它现在可以同时使用 FirebaseDatabase.getInstance().setPersistenceEnabled(true); & FirebaseDatabase.getInstance().setPersistenceEnabled(false);
猜你喜欢
  • 1970-01-01
  • 2018-01-28
  • 2018-01-26
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多