2013-01-07 15 views
6

मैं ऐप में अन्य (खंड) गतिविधियों द्वारा साझा अस्थायी स्थिति और सामान्य कोड संग्रहीत करने के लिए एंड्रॉइड Application कक्षा का उपयोग करने पर विचार कर रहा हूं।एंड्रॉइड एप्लिकेशन क्लास का उपयोग कब और नहीं करना है?

मैं के रूप में है कि क्या यह के लिए एक अच्छी जगह है करने के लिए अधिक प्रतिक्रिया प्राप्त करना चाहते हैं:

  1. आईडी, वरी कुंजी नाम, आदि
  2. वैश्विक चर (यानी setters/टिककर खेल) की तरह साझा स्थिरांक को दर्शाती है वर्तमान यूआई राज्य, नेविगेशन, चयनित खंड, और, सामान्य रूप से, अस्थायी डेटा जिसे जारी रखने की आवश्यकता नहीं है।
  3. कुछ स्थितियों को ट्रिगर करते समय लगातार डेटा के लिए हुक।
  4. वरीयता परिवर्तन के बाद यूआई को अपडेट करना।
  5. ऐप में कहीं से भी संदर्भ तक पहुंचने का एक आसान तरीका प्रदान करना, जिसमें कोड getApplication() उपलब्ध नहीं है, उदा। एक स्थिर गेटर के माध्यम से MyApp.getApp()
  6. वैश्विक विधियों की दृश्यता की आवश्यकता वाले सामान्य तरीकों और जो समर्पित कक्षाओं में जाने के लिए बहुत बोझिल हो जाएंगे।

गतिविधि कक्षा में क्या उचित/उपयोगी/आसान होगा? इसमें रखने के लिए एक अच्छा विचार नहीं होगा और सबसे अच्छा विकल्प क्या होगा? और आखिरकार, जो आपने पाया है, एप्लिकेशन को आपके ऐप्स में सबसे अच्छा इस्तेमाल किया जा सकता है?

आईडी की तरह
+1

पद के रूप में '-1' को फ़्लैट करना अच्छा प्रश्नों का एक समूह है जो अन्य उपयोगकर्ताओं को भी लाभान्वित करेगा। :) – ninetwozero

उत्तर

2

साझा स्थिरांक, वरी कुंजी नाम, आदि

मैं आम तौर पर इस बात के लिए सी नामक एक स्थिरांक फ़ाइल बनाने, के रूप में अपनी पठनीयता के लिए बेहतर है। C.SHARED_PREFS समझने में आसान है कि Application.SHARED_PREFS IMHO।

वैश्विक चर (अर्थात setters/टिककर खेल) वर्तमान UI राज्य, नेविगेशन, चयनित टुकड़ा है, और, सामान्य, अस्थायी डेटा में परिलक्षित करती है कायम करने की आवश्यकता नहीं है।

इस गतिविधि या घटक है जो यह चिंताओं में बंद बेहतर होगा (उदाहरण के लिए, एक गतिविधि के यूआई राज्य शायद हिमलंब बंडल में संग्रहीत करना चाहिए, या गतिविधि की है कि उदाहरण के भीतर)।

कुछ स्थितियों को ट्रिगर होने पर लगातार डेटा के लिए हुक।

यह ठीक होना चाहिए।

वरीयता परिवर्तन के बाद यूआई को अपडेट करना।

फिर से, मुझे लगता है कि यह संबंधित घटक में बेहतर होगा।

संदर्भ, कोड जहां getApplication() उपलब्ध नहीं है, जैसे सहित एप्लिकेशन में कहीं से उपयोग करने के लिए एक आसान तरीका प्रदान करना स्थिर गेटर जैसे MyApp.getApp() के माध्यम से।

यह काम करेगा, लेकिन मेमोरी लीक से सावधान रहें। किसी गतिविधि या सेवा या जो कुछ भी विधि से कॉल करते समय आपको आम तौर पर संदर्भ को पैरामीटर के रूप में पास करना चाहिए। मेमोरी रिसाव की कम संभावनाएं। वैश्विक राज्य चर की दृश्यता और जो भी समर्पित वर्गों के लिए दूर जाने की बोझिल बन जाएगा की जरूरत है कि

आम तरीकों।

मैं इसे बेहतर होगा समर्पित वर्गों के प्रयास करने के लिए, के रूप में अपने ऐप सुविधाओं और आकार में बढ़ता है, इस बनाए रखने के लिए कठिन हो जाएगा लग रहा है।

+0

संबंधित 'गतिविधि' वास्तव में एक व्यूपेजर है जिसमें कई फ्रैगमेंट एक्टिविटी पेज होते हैं - इसलिए राज्य को रखने और टुकड़ों के बीच संचार की आवश्यकता होती है। घटनाओं का उपयोग इमो जो इस स्थिति में अधिक हो जाएगा। – ccpizza

2

शायद यह कुछ जगह है जहां कुछ हुक संलग्न किए जा सकते हैं।

उदाहरण के लिए, यदि आप ACRA क्रैश रिपोर्टिंग लाइब्रेरी का उपयोग, तो आप सिर्फ आवेदन वर्ग का उपयोग करने के लिए, क्योंकि यह वह जगह है जहाँ ACRA जुड़ा हुआ है की जरूरत है। यह है कि मुझे इस वर्ग का उपयोग शुरू करने के लिए मजबूर किया; मुझे पहले कभी जरूरत नहीं थी।

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