android - अगर ऐप को मार दिया जाता है तो फायरबसे ऑफ़लाइन कैश को सिंक नहीं करता है



caching firebase (1)

फायरबेज प्रलेखन के अनुसार

लेन-देन ऐप पुनरारंभ में कायम नहीं हैं

यहां तक ​​कि दृढ़ता के साथ भी, लेन-देन ऐप पुनरारंभ में कायम नहीं हैं। तो आप अपने फायरबेज रीयलटाइम डाटाबेस के लिए ऑफ़लाइन होने वाले लेन-देन पर भरोसा नहीं कर सकते। सर्वश्रेष्ठ उपयोगकर्ता अनुभव प्रदान करने के लिए, आपके ऐप को यह दिखाना चाहिए कि कोई भी लेनदेन अभी तक आपके फायरबेज रीयलटाइम डेटाबेस में सहेजा नहीं गया है, या यह सुनिश्चित कर लें कि आपका ऐप मैन्युअल रूप से याद रखता है और ऐप पुनरारंभ के बाद फिर से उन्हें निष्पादित करता है।

मैं ऑफ़लाइन दृढ़ता स्थापित कर रहा हूँ

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

जैसा कि एक पहले पोस्ट में वर्णित है , लेकिन निम्नलिखित उपयोग के मामले विफल हैं:

  1. हैंडसेट पर इंटरनेट कनेक्टिविटी बंद करें
  2. डीबी को लिखने का प्रयास
  3. ओएस में उपयोगकर्ताओं के मल्टीटास्किंग मेनू का उपयोग करके स्मृति से एप्लिकेशन को मार डालो
  4. इंटरनेट कनेक्टिविटी वापस चालू करें
  5. ऐप पुनः लॉन्च करें इस बिंदु पर मुझे उम्मीद है कि नया रिकॉर्ड दोबारा बहाल नेटवर्क कनेक्टिविटी के माध्यम से डीबी को भेजा जाएगा, लेकिन ऐसा नहीं होगा। (क्या मेरी अपेक्षाएं सही हैं?)

नमूना कोड:

static{
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
}

void updateValue(){
    DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("mydb");
    dbRef.keepSynced(true);
    dbRef.setValue("123");
}

ध्यान दें, अगर मैं मेमोरी से ऐप को नहीं मारता तो कैशिंग काम करता है:

  1. हैंडसेट पर इंटरनेट कनेक्टिविटी बंद करें
  2. डीबी को लिखने का प्रयास
  3. इंटरनेट कनेक्टिविटी वापस चालू करें
  4. नेटवर्क कनेक्टिविटी बहाल होने के बाद एक नया रिकॉर्ड डीबी को भेजा जाता है।




firebase-database