2017-03-24 2 views
6

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

हम मिलता है जड़ डेटा या केवल लॉग-इन उपयोगकर्ता डेटा कैश के रूप में शामिल हमारे Firebase एप्लिकेशन के सभी डेटा?

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

मैं आवेदन कक्षा में ऑफ़लाइन क्षमता को सक्षम करने के लिए इस कोड स्निपेट का उपयोग कर रहा

+0

आप क्या समस्या देख रहे हैं? –

+0

@ डौग स्टीवंसन: अरे डौग, समाधान मिला .. बस नीचे दिए गए मेरे उत्तर पर एक नज़र डालें, आपको मेरी समस्या के बारे में पता चल जाएगा .. –

उत्तर

0

पढ़ इस

कि Firebase रीयलटाइम डाटाबेस ग्राहक जबकि सिंक होगा, हठ को सक्षम करने के किसी भी डेटा तक ऑनलाइन डिस्क पर बनी रहती है और ऑफ़लाइन उपलब्ध है, भले ही उपयोगकर्ता या ऑपरेटिंग सिस्टम ऐप को पुनरारंभ करता हो।

link

+0

धन्यवाद ओसुमा। यह मेरी समस्या का सही समाधान नहीं है। वास्तव में समस्या अलग है, मैंने इसके लिए समाधान पोस्ट किया है .. एक नज़र डालें .. –

3

यहाँ, मैं Firebase Support Team

वास्तव में, मुख्य कारण से मेरे सवाल के लिए इस सवाल का जवाब मिल गया है, मैं सभी डेटा (सहित हो रही लॉग-इन उपयोगकर्ता डेटा और अन्य सभी उपयोगकर्ता का डेटा) मेरे डिवाइस में कैश के रूप में मेरे फायरबेस ऐप का, क्योंकि मैं अपने डेटाबेस के रूट नोड पर keepSynced() का उपयोग कर रहा हूं।

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

ऊपर कोड स्निपेट के रूप में, डेटाबेस संदर्भ डेटाबेस के नोड जड़ को संदर्भित कर रहा है:

नीचे कोड स्निपेट पर एक नज़र है, जो मैं ऑफ़लाइन क्षमता को सक्षम करने के लिए उपयोग कर रहा हूँ ले लो।

अब, इस डेटाबेस संदर्भ पर, मैं keepSynced() विधि का उपयोग कर रहा हूं। इसलिए, यह डिवाइस में कैश के रूप में सिंक में सभी डेटा रख रहा है और यह करने के लिए एक अच्छी बात नहीं है।

आदर्श रूप में, हम ऑफ़लाइन काम करने के लिए उन databaseReferences हमारे ऐप्लिकेशन के लिए आवश्यक पर keepSynced() विधि का उपयोग करना चाहिए।

यहां कोड स्निपेट के ऊपर, मैं एक और गलती कर रहा हूं जिसका उपयोग मैं setPersistenceEnabled() एप्लिकेशन क्लास पर कर रहा हूं। मुझे इसे अपने लॉन्चर गतिविधि वर्ग पर ले जाना चाहिए।

मेरे उपरोक्त कोड स्निपेट के अनुसार, setPersistenceEnabled() हर बार कॉल किया जाएगा, जब ऐप पहली बार शुरू होगा। यह ऐप इंस्टॉल करने के बाद केवल एक बार उपयोग किया जाना चाहिए।

हम setPersistanceEnabled() को कॉल करने के लिए नीचे दिए गए कोड स्निपेट की तरह कॉल कर सकते हैं।

@Override 
public void onCreate() { 
    super.onCreate(); 
    if (!FirebaseApp.getApps(this).isEmpty()) { 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
} 
संबंधित मुद्दे

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