2017-09-09 56 views
0

重新啓動應用程序後,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

也許問題是:

  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在某處或只是運行代碼? –