如何在Android中禁用Firebase缓存(持久性)?

问题描述:

重新启动应用程序后,Firebase正在加载本地缓存的数据。我怎样才能删除这个本地缓存数据&只检索新鲜数据?如何在Android中禁用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 
      } 
     } 
..... 
+0

我面临同样的问题,但问题是没有缓存的数据,是同步不够具体。尝试改进“keepSynced(false)”;“让我们看看是否可行 – cutiko

+0

我试过LC.keepSynced(false);它也不起作用。 :( –

+0

每次同步都必须在执行任何数据库操作之前完成,最好的办法就是做到这一点应用程序类,这有助于以任何方式? – cutiko

也许问题是:

  1. 节点是同步必须具体
  2. 的同步必须在任何数据库事务之前进行,这样做的好方法是在应用程序类

用于创建应用程序类,创建一个类,extendsapplication类,然后在Manifest使用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"> 
+0

我将如何访问AppCompatActivity?activity_main.xml? –

+0

您不必在创建应用程序时发生这种情况,这是创建任何活动之前 – cutiko

+0

Ok将此代码插入到我的应用程序中。 CustomApp在某处或只是运行代码? –