2017-03-24 22 views
6

Firebase android uygulamasında çevrimdışı yetenek hakkında bir şüphem var. Firebase çevrimdışı yeteneği etkinleştirdikten sonraAndroid'de çevrimdışı kapasiteyi etkinleştirdikten sonra Firebase verilerimizi önbellek olarak alıyor muyuz?

biz alabilirim sadece giriş yapan kullanıcı verilerinin cache olarak kök veri veya dahil eden Firebase uygulamasının tüm bilgi?

final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     if (database != null) { 
      database.setPersistenceEnabled(true); 
      database.getReference().keepSynced(true); 
     } 

ben Uygulama sınıfında Çevrim yeteneği sağlayan bu kod parçacığını kullanıyorum

+0

Neyi gözlemliyorsunuz? –

+0

@Doug Stevenson: Hey Doug, çözümü aldım .. sadece aşağıdaki cevaba bir göz atın, benim sorunum hakkında bir fikir edineceksiniz .. –

cevap

0

Firebase Gerçek Zamanlı Veri Tabanı istemci süre senkronize edeceğini, herhangi bir veri kalıcılığını etkinleştirerek bu

okumak çevrimiçi diski kullanmaya devam eder ve kullanıcı veya işletim sistemi uygulamayı yeniden başlattığında bile çevrimdışıdır. İşte

link

+0

Teşekkürler Oussema. Bu benim sorunumun tam çözümü değil.Aslında problem farklıdır, bunun için bir çözüm gönderdim .. Bakın .. –

3

, ben Aslında

Firebase Support Team ana nedeni benim soru için cevabı var, ben de dahil olmak üzere tüm verileri (alıyorum açmış kullanıcı verileri ve diğer tüm benim veritabanımın kök düğümünde keepSynced() kullanıyorum çünkü benim cihazında benim önbellek olarak benim firebase uygulaması benim). Yukarıdaki kod parçacığı olduğu gibi

final FirebaseDatabase database = FirebaseDatabase.getInstance(); 
    if (database != null) { 
     database.setPersistenceEnabled(true); 
     database.getReference().keepSynced(true); 
    } 

, referans veritabanı düğümünü kökünü başvuran veritabanı:

Ben çevrimdışı yeteneği sağlamak için kullanıyorum aşağıda kod parçacığı üzerinde bir göz atın.

Şimdi, bu veritabanı başvurusunda, keepSynced() yöntemini kullanıyorum. Yani, bu, tüm verileri cihazda önbellek olarak senkronize tutmaktır ve bu yapmak için iyi bir şey değildir.

İdeal olarak, çevrimdışı çalışmak için bizim uygulama için gerekli olanlar databaseReferences üzerine keepSynced() yöntem kullanmalıdır.

Yukarıdaki kod snippet'inde, uygulama sınıfı üzerinde setPersistenceEnabled() kullanıyorum olan bir hata daha yapıyorum. Bunu başlatıcı Etkinliğim sınıfında taşımalıyım. Uygulamanın ilk kez ne zaman başlayacağı, her zamanlı adı verilecek() benim yukarıdaki kod parçacığı gereğince

, setPersistenceEnabled. Bu, uygulamayı yükledikten sonra yalnızca bir kez kullanılmalıdır.

setPersistanceEnabled() numaralı telefonu arayarak aşağıdaki kod snippet'ini arayabiliriz.

@Override 
public void onCreate() { 
    super.onCreate(); 
    if (!FirebaseApp.getApps(this).isEmpty()) { 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
}