2011-11-15 10 views
22

मेरी स्थिति में, एक ऐसा मामला है जिसमें मुझे यह सुनिश्चित करने की ज़रूरत है कि गतिविधि केवल एक ही समय में चलती है।एक गतिविधि उदाहरण कैसे बनाए रखें लेकिन दृश्य को अपडेट करने में सक्षम हो?

मुझे पता चला कि मैंने गतिविधि के LauchMode को सेट किया है, तो मैं एक उदाहरण के उद्देश्य तक पहुंच सकता हूं, लेकिन यह गतिविधि के दृश्य को अपडेट नहीं करेगा।

यह गतिविधि startActivityForResult द्वारा लॉन्च की गई है, और हम गतिविधि के इरादे से यूआरआई भेजते हैं।

की इस कुछ मामले से चर्चा करते हैं:

  • गैलरी - imageA के साथ इस गतिविधि lauch।

  • कैमरा - छवि बी के साथ इस गतिविधि को लॉच करें।

मेरा अनुरोध पुरानी गतिविधि को नष्ट नहीं करना है, लेकिन जिस गतिविधि को अभी नए इरादे से जानकारी मिली है, उसे दृश्य को ताज़ा करना चाहिए।


मैं एक नई विधि पाया, onNewIntent। यह विधि फिर से शुरू करने से पहले इरादे को रीफ्रेश कर सकती है। मैं कोशिश करुंगा।

+0

इतना महत्वपूर्ण क्यों है कि गतिविधि जिंदा रखती है? मुझे लगता है कि यह असंभव है। –

+0

ऐसा इसलिए है क्योंकि यदि दो गतिविधि उदाहरण हैं, तो हमारे ऐप में कुछ समस्या आएगी। तो मुझे यह सुनिश्चित करने की ज़रूरत है, यह एक उदाहरण है। – johnsonYu

उत्तर

60

आप एकल इंस्टेंस के एक मैनिफेस्ट विशेषता के साथ एक गतिविधि कर सकते हैं। जैसे ही गतिविधि को फिर से चालू किया जाता है, रेस्यूम पर कॉल किया जाता है। आप नई छवि के साथ दृश्य को अपडेट कर सकते हैं और पुराने दृश्य को अमान्य कर सकते हैं।

<activity .. 
     android:launchMode= "singleInstance" /> 
+0

मेरी छवि जानकारी इरादे में स्टोर की गई है। लेकिन मुझे getIntent() पुरानी जानकारी के साथ मंशा जानकारी मिलती है। शायद यह मुख्य सवाल है। आपके जवाब के लिए धन्यवाद। – johnsonYu

+2

उपयोग पर न्यूइन्टेंट() इरादा अपडेट कर सकते हैं। – johnsonYu

+0

क्या गतिविधि गतिविधि में गतिविधि को सेट करने का कोई तरीका है जिस गतिविधि ने इसे शुरू किया है। <गतिविधि .. एंड्रॉइड: launchMode = "singleInstance" />; यह विधि गतिविधि के साथ एक नया कार्य शुरू करेगी। – johnsonYu

28

अपने मेनिफ़ेस्ट में, android:launchMode="singleTask" बजाय android:launchMode="singleInstance" का उपयोग करें। एकल इंस्टेंस का उपयोग केवल मौजूदा उदाहरण पर लौटाता है यदि यह स्टैक के शीर्ष पर है। सिंगलटास्क, दूसरी ओर, गतिविधि के मौजूदा उदाहरण पर वापस लौटें, क्योंकि यह हमेशा कार्य की जड़ पर है।

फिर, जब आपका इंस्टेंस लॉन्च होता है, तो नए इरादे के अनुसार अपना यूआई अपडेट करने के लिए onNewIntent ओवरराइड करें।

विवरण के लिए the Andorid documentation का संदर्भ लें।

+4

मैं मानता हूं कि दोनों मोड गतिविधि के केवल एक उदाहरण की अनुमति देते हैं लेकिन अंतर की आपकी व्याख्या गलत है। – ben75

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