2017-10-16 16 views
6

मैं एक एंड्रॉइड एप्लिकेशन बना रहा हूं जिसे सप्ताहों के लिए ऑफ़लाइन काम करना है, लेकिन यह दूरस्थ रूप से डीबी के साथ सिंक हो सकता है क्योंकि यह ऑनलाइन हो जाता है।फायरस्टोर ऑफ़लाइन कैश

मेरा सवाल यह है कि फायरस्टोर इस के लिए एक अच्छा विकल्प हो सकता है? फायरस्टोर अपने ऑफलाइन कैश को कब तक रखता है?

+0

ऐसा लगता है कि आपको ऑफ़लाइन कैश में विशाल डेटा सहेजने की आवश्यकता है, तो आपको 'SQLite' या किसी अन्य स्थानीय डीबी या कैशिंग सिस्टम के साथ डेटा सिंक करने की आवश्यकता है। – wonsuc

+0

हाय क्या आप कृपया बता सकते हैं कि आप फायरस्टोर –

उत्तर

5

फायरस्टोर को ऐसे डिस्कनेक्ट/ऑफ़लाइन उपयोग के लिए डेटा जारी रखने के लिए कॉन्फ़िगर किया जा सकता है। मेरा सुझाव है कि आप जो इस सुविधा को सक्षम के इस नमूने शामिल डॉक्स में enable offline persistence अनुभाग, पढ़ें:

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder() 
     .setPersistenceEnabled(true) 
     .build(); 
db.setFirestoreSettings(settings); 

आप कोड नहीं है कि क्या आप से जुड़े रहे हैं एक ही है या होगा, एसडीके के बाद से बस वही काम करता है यदि आप यह पता लगाना चाहते हैं कि डेटा कैश से आ रहा है (और इस प्रकार संभावित रूप से पुराना है), दस्तावेज़ों में सेक्शन Listen to offline data पढ़ें।

कैश में डेटा निश्चित समय के बाद समाप्त नहीं होता है। कैश से डेटा को हटाने के लिए केवल दो कारणों को हटा दिया गया है:

  1. डेटा को सर्वर से हटा दिया गया है, इस स्थिति में क्लाइंट इसे डिस्क कैश से हटा देगा।
  2. ग्राहक को हाल ही के डेटा के लिए जगह बनाने के लिए अपनी डिस्क कैश को शुद्ध करने की आवश्यकता है।
+0

में ऑफ़लाइन डेटा कैसे सम्मिलित कर रहे हैं क्षमा करें अगर मैं पर्याप्त स्पष्ट नहीं था, लेकिन मेरा सवाल यह था कि फायरस्टोर अपने ऑफ़लाइन कैश को कितना समय देता है? मैंने आपके द्वारा पहले भेजे गए लिंक को पढ़ लिया है, इसमें यह शामिल है: "यह सुविधा क्लाउड फायरस्टोर डेटा की एक प्रति कैश करती है जिसे आपका ऐप सक्रिय रूप से उपयोग कर रहा है, इसलिए आपका ऐप डिवाइस ऑफ़लाइन होने पर डेटा तक पहुंच सकता है।" "सक्रिय रूप से उपयोग" का क्या अर्थ है? यदि मैं दिन या सप्ताह के बाद इसे एक्सेस नहीं करता तो क्या यह मेरा डेटा हटा देगा? क्या मैं इसे अपने सभी डेटा को तब तक रखने के लिए कॉन्फ़िगर कर सकता हूं जब तक कि मैं नहीं कहूं? –

+0

कोई स्पष्ट कैश समाप्ति नहीं है। यह तब तक डेटा रखता है जब तक इसे नए डेटा के लिए जगह बनाने की आवश्यकता न हो। –

+1

तो अगर यह निर्णय लेता है कि इसे अंतरिक्ष की आवश्यकता है, तो यह मेरा डेटा हटा देगा? जब तक यह मेरा डेटा हटाना शुरू नहीं हो जाता तब तक यह कितना डेटा स्टोर कर सकता है? यह मेरे लिए महत्वपूर्ण है क्योंकि मुझे एक विश्वसनीय स्थानीय डेटाबेस की आवश्यकता है। –

0

यदि आप बादल Firestore में डेटा सुनने के लिए आपको संचित डेटा की तत्काल स्नैपशॉट मिलता है और यह भी होगा अद्यतन करता होगा कि आपका ऐप्लिकेशन ऑनलाइन कनेक्ट करने में सक्षम है:

final DocumentReference docRef = db.collection("cities").document("SF"); 
docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() { 
    @Override 
    public void onEvent(@Nullable DocumentSnapshot snapshot, 
         @Nullable FirebaseFirestoreException e) { 
     if (e != null) { 
      Log.w(TAG, "Listen failed.", e); 
      return; 
     } 


     // Determine if the data came from the server or from cache 
     String source = snapshot != null && snapshot.getMetadata().hasPendingWrites() 
       ? "Local" : "Server"; 


     // Read the data 
     if (snapshot != null && snapshot.exists()) { 
      Log.d(TAG, source + " data: " + snapshot.getData()); 
     } else { 
      Log.d(TAG, source + " data: null"); 
     } 
    } 
}); 

हठ डिफ़ॉल्ट इसलिए इस व्यवहार से सक्षम है किसी भी विन्यास की आवश्यकता नहीं है।

संबंधित मुद्दे