2016-09-07 3 views
7

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

अगर हमें इसे पृष्ठभूमि धागे में लिखना है तो क्या आप कृपया बता सकते हैं कि कौन से संचालन में अधिक समय लगता है। उदाहरण के लिए:

mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog"); 

मुझे लगता है कि मुख्य यूआई धागे पर इस प्रदर्शन जोखिम भरा हो सकता है कि क्योंकि डेटाबेस के बीच संबंध स्थापित करने के कुछ समय बड़े समय लग सकता है।

+1

फ़ायरबेस –

+0

के लिए किसी भी थ्रेड का उपयोग करने की आवश्यकता नहीं है यह ऐसा लगता है कि आप दस्तावेज़ –

उत्तर

11

फ़ायरबेस डेटाबेस क्लाइंट मुख्य थ्रेड से सभी नेटवर्क और डिस्क ऑपरेशंस करता है।

फायरबेस डाटाबेस क्लाइंट पर आपके कोड पर सभी कॉलबैक को मुख्य थ्रेड पर आमंत्रित करता है।

इसलिए डेटाबेस के लिए नेटवर्क और डिस्क एक्सेस आपके स्वयं के धागे को स्पिन करने या पृष्ठभूमि कार्यों का उपयोग करने का कोई कारण नहीं है। लेकिन अगर आप कॉलबैक में डिस्क, नेटवर्क I/O या CPU गहन संचालन करते हैं, तो आपको मुख्य थ्रेड से स्वयं को निष्पादित करने की आवश्यकता हो सकती है।

0

फायरबेस अपने सभी कॉलबैक को असीमित रूप से https://www.firebase.com/docs/android/guide/retrieving-data.html दस्तावेज के रूप में चलाता है। यह एक वेब सॉकेट परत के माध्यम से किया जाता है।

उदाहरण के लिए, आपको फायरबेस डेटा अपडेट के परिणामस्वरूप बड़ी मात्रा में डेटा प्रोसेसिंग करने की आवश्यकता है - आपको शायद यूआई को अवरुद्ध करने से रोकने के लिए एक AsyncTask को स्पिन करना चाहिए। यह यूआई में प्रस्तुत होने से पहले सामान्य रूप से डेटा प्रोसेसिंग से कैसे संपर्क करेगा उससे अलग नहीं है।

फायरबेस दस्तावेज़ में डेटा को संभाला जाता है और किसी भी पृष्ठभूमि को निष्पादित करने की आवश्यकता क्यों नहीं है। आपको शायद दस्तावेज़ पढ़ने में कुछ समय व्यतीत करना चाहिए।

1

यदि आप डेटाबेस से डेटा का एक बड़ा-आइस संग्रह खींच रहे हैं, और आप इसे सभी को जावाबीन प्रकार संग्रह में परिवर्तित करना चाहते हैं, तो आप इसे डेटा के आकार के आकार के रूप में किसी दूसरे थ्रेड पर ऑफ़लोड करना चाहेंगे प्रतिबिंब के मुख्य धागे के लिए बहुत अधिक काम हो सकता है। इस बारे में निश्चित रूप से जानने का एकमात्र तरीका यह है कि इसे स्वयं बेंचमार्क करें। आम तौर पर, आप प्रति सेकंड 60 फ्रेम की इष्टतम प्रतिपादन गति से ड्रॉप करना शुरू करने से पहले मुख्य धागे पर चीजों को करने के लिए 16ms प्राप्त करते हैं।

मैंने हाल ही में अपनी परियोजना पर एक अंतर को ट्वीट किया जहां मैंने पृष्ठभूमि प्रसंस्करण के लिए एक निष्पादक को डेटाबेस श्रोता भेजने के लिए एक पैटर्न को दोहराया। हालांकि, आपका ऐप इस तरह की जटिलता के लिए कॉल नहीं कर सकता है। हालांकि, यह मेरे ऐप के लिए अच्छा था। https://twitter.com/CodingDoug/status/773277680867258368

+0

पढ़कर जवाब दे सकते हैं अगर फ़ायरबेस ने मुख्य थ्रेड से उन कॉलबैक को निष्पादित करने का एक तरीका प्रदान किया तो अच्छा होगा। उस ट्वीट में जानकारी के लिए धन्यवाद। – Sotti

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

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