2010-11-12 16 views
12

मेरे पास एक ऐसा एप्लिकेशन है जो पृष्ठभूमि में चलता है, और अधिसूचना प्रणाली के माध्यम से एक त्रुटि संदेश प्रदर्शित करता है। इस अधिसूचना में एक लंबित इंटेंट है जो ऐप की मुख्य स्क्रीन को वापस ले जाता है। इस मुख्य स्क्रीन पर, मैंने launchmode = "सिंगलटास्क" सेट किया है। जैसा कि मैं इसे एंड्रॉइड देव गाइड से समझता हूं, इसका मतलब यह होना चाहिए कि मेरी मुख्य गतिविधि में केवल एक उदाहरण होगा।एंड्रॉइड लॉन्चमोड = "सिंगल टास्क" अपेक्षित काम नहीं करता

हालांकि, यदि उपयोगकर्ता उस गतिविधि को उस समय देख रहा है (या ऐप के भीतर कोई अन्य), और इसे साफ़ करने के लिए अधिसूचना को छूता है, तो यह आगे बढ़ता है और स्टैक पर गतिविधि की एक और प्रतिलिपि रखता है, इसलिए अगर मैं बैक बटन दबाता हूं, तो यह मुख्य स्क्रीन पर वापस आ जाएगा (मुख्य स्क्रीन से)।

यह ऐसा क्यों करेगा?

उत्तर

16

आप लगभग सवाल में अपने खुद के सवाल का जवाब देने होते हैं;)

उपयोग करके देखें:

android:launchMode="singleInstance" 

हालांकि चेतावनी दी हो, अगर आप startActivityForResult तरह anythign कर रहे हैं - आप परिणाम प्राप्त कभी नहीं होगा!

अद्यतन:

आप onNewIntent का उपयोग कर नए इरादे डेटा प्राप्त करना चाहते हैं:

public void onNewIntent(Intent intent) 
{ 
    super.onNewIntent(intent); 
    setIntent(intent); 
} 

यही मंशा आवेदन रिटर्न बदल जाएगा जब आप नए इरादे जो करने के लिए पारित किया गया था करने के लिए getIntent() का उपयोग onNewIntent।

+2

ठीक है, मैं आगे बढ़ गया और इसके बजाए सिंगल इंस्टेंस की कोशिश की। दुर्भाग्य से, यह अभी भी वैसे ही व्यवहार कर रहा है। – Ogre

+0

प्रलेखन पर एक और नज़र डालने के बाद, मुझे आश्चर्य है कि मुझे अपनी मुख्य गतिविधि में न्यूइन्टेंट() पर ओवरराइड करने की आवश्यकता है, लेकिन मुझे नहीं पता कि यह क्या करना है। – Ogre

+0

ओग्रे - न्यूइन्टेंट() पर उपयोग करने के बारे में जानकारी के लिए अद्यतन देखें और [एंड्रॉइड "सिंगल टॉप" लॉन्च मोड और ऑन न्यूंटेंट विधि] पर एक नज़र डालें (http: // stackoverflow।कॉम/प्रश्न/1711785/एंड्रॉइड-सिंगल-टॉप-लॉन्च-मोड-एंड-ऑनविंटेंट-विधि) – Scoobler

3

चेक activity.launchmode की डॉक्स।

मैं एक ऐसी ही समस्या थी और android:launchMode="singleInstance" साथ इसे हल।

+0

से भी बुलाया जा सकता है, यह मेरे लिए भी समाधान है – Javanator

+0

कई निराशाजनक घंटों के बाद 2014 के अंत में मेरे लिए काम करता है –

1

यह मेरे लिए लग रहा है कि आप की तरह निम्नलिखित व्यवहार चाहते उपयोगकर्ता अधिसूचना का चयन करता है, तो:

  • एप्लिकेशन पहले से ही एक कार्य में चल रहा है, बस अग्रभूमि और शो जो कुछ भी गतिविधि होता है उस कार्य को लाने गतिविधि ढेर के शीर्ष पर होना।

  • एप्लिकेशन पहले से ही किसी कार्य में नहीं चल रहा है, तो कोई नया कार्य में अनुप्रयोग के मुख्य गतिविधि का शुभारंभ।

इस व्यवहार आप के बाद कर रहे हैं, तो आप की जरूरत नहीं है (या चाहते हैं) किसी विशेष लांच मोड। इस सवाल का मेरा उत्तर देखें: Notification to restore a task rather than a specific activity?

यह आप क्या चाहते हैं क्या करना चाहिए।

0

जब तक मैंने बैकअप इरादे को हटा नहीं दिया तब तक मुझे वही समस्या थी। अगर कोई मेरी एकल कार्य मुख्य गतिविधि से बाहर निकलता है, तो उसे सही तरीके से काम करना चाहिए।

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