2010-07-16 12 views
20

मुझे बस एक विजेट द्वारा जला दिया गया है। मैं समस्या का कारण देख सकता था, लेकिन मैं यह निर्धारित नहीं कर सका कि उसका समाधान क्यों है या नहीं। मेरा विजेट एक खोज जारी कर रहा था (SearchManager) और गतिविधि ने एक खोज संवाद लॉन्च किया, लेकिन जब यह मेरे विजेट पर वापस कॉल किया गया, तो उसने विजेट के लिए एक और संदर्भ बनाया (यानी, थ्रेड-आईडी समान था, लेकिन विजेट-आईडी 65 से 0 में बदल गया)।एक एंड्रॉइड विजेट या एप्लिकेशन में सिंगलटॉप लॉन्च मोड का उपयोग करना आवश्यक है?

इससे मुझे विश्वास हुआ कि एक नया उदाहरण बनाया जा रहा है और मैंने उन सेटिंग्स के लिए प्रलेखन की खोज की जो समस्या पर लागू होंगे। आखिरकार, मैंने android:launchMode="singleTop" पर ठोकर खाई और जैसे ही मैंने इसे एंड्रॉइडमैनिफेस्ट में सेट किया, व्हायोला! मेरा विजेट काम किया।

यह मुझे डीबग करने के लिए दो दिनों का बेहतर हिस्सा ले गया।

क्या कोई अन्य स्थितियां हैं या क्या मेरी समस्या का अधिक तकनीकी रूप से सही उत्तर है?

+1

मुझे नहीं लगता कि प्रश्न शीर्षक सामग्री के लिए उपयोगी है। मैं सिंगलटॉप के लिए उपयुक्त उपयोग मामलों के बारे में एक प्रश्न और उत्तर देखने की उम्मीद करता था। यह विकास कथा का एक सा है और फिर दस्तावेज़ीकरण से उद्धरण है। – helloPiers

+1

@ लोट 105 - काफी मेला। आगे बढ़ें और कुछ जवाब जोड़ें। यह एक बड़ी समस्या थी जिसे मैंने सामना किया था इसलिए मैंने एसओ द्वारा सुझाए गए अनुसार "अपने प्रश्न पूछें और जवाब दें"। मुझे यकीन है कि आपका उत्तर योगदान और अन्य इस प्रश्नोत्तर में सुधार करेंगे। इसमें 3000 से अधिक विचार हैं, इसलिए स्पष्ट रूप से रुचि है। मुझे संदेह है कि मेरा जवाब * केवल * उत्तर है :) और निश्चित रूप से, यह दस्तावेज़ से एक संदर्भ और उद्धरण है, जहां से मुझे मेरा जवाब मिला। निजी तौर पर, मुझे इस शैली के मुद्दे/उत्तर में वास्तविक मूल्य मिलता है क्योंकि यह डीओसी को स्पष्ट करता है। – mobibob

+1

मुझे स्पष्ट होना चाहिए था। प्रश्न शरीर और उत्तर अपने अधिकार में बिल्कुल उपयोगी और दिलचस्प हैं। – helloPiers

उत्तर

36

मैं था एंड्रॉयड डॉक्स में अधिक पढ़ने - मैं एक जीवन भर खर्च उनके डॉक्स पढ़ने सकता है और एक नया सूक्ष्म विस्तार है कि मेरे दिमाग टूट जाता है लगता है :) यह मेरी बहु-उदाहरणों बताते हैं कि मैं उम्मीद नहीं थी, फिर भी, मैं करने के लिए कॉन्फ़िगर पाए जाते हैं।

Android Doc on Activity definition for AndroidManifest.xml

"मानक" और "singleTop" मोड सिर्फ एक संबंध में एक दूसरे से अलग: हर बार जब वहाँ एक "मानक" गतिविधि के लिए नए इरादे , की एक नई उदाहरण वर्ग को पर उस इरादे का जवाब दिया गया है। प्रत्येक उदाहरण एक एकल मंशा संभालता है। इसी प्रकार, एक "सिंगलटॉप" गतिविधि का नया उदाहरण भी एक नया मंशा को संभालने के लिए बनाया जा सकता है। हालांकि, यदि लक्ष्य कार्य में पहले से ही का मौजूदा उदाहरण है, तो उसके स्टैक के शीर्ष पर गतिविधि है कि उदाहरण को नया इरादा (ऑन न्यूइन्टेंट() कॉल में) प्राप्त होगा; नया उदाहरण नहीं बनाया गया है। अन्य परिस्थितियों में - उदाहरण के लिए, यदि "सिंगलटॉप" गतिविधि का मौजूदा उदाहरण लक्ष्य कार्य में है, लेकिन स्टैक के शीर्ष पर नहीं है, या यह स्टैक के शीर्ष पर है, लेकिन इन नहीं लक्ष्य कार्य - एक नया उदाहरण ढेर पर बनाया और धक्का दिया जाएगा।

+6

"या यदि यह एक ढेर के शीर्ष पर है, लेकिन लक्ष्य कार्य में नहीं - एक नया उदाहरण बनाया जाएगा और ढेर पर धक्का दिया जाएगा।" क्यूं कर? क्या कोई इस उद्धृत खंड को आगे समझा सकता है? – Patrick

+0

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