2010-12-29 12 views
5

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

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

+1

यदि आप समझाते हैं कि सेवा आपकी समस्या का उत्तर क्यों नहीं है तो यह संभवतः सहायक होगा। यह बहुत सेवा उन्मुख लगता है। – Matt

+1

सबसे पहले, ठीक है क्योंकि मैं नहीं चाहता कि मेरी प्रक्रिया पृष्ठभूमि में चलने के लिए सेवाओं की तरह है। मैं जल्दी और साफ प्रवेश और बाहर निकलना चाहता हूँ। और दूसरा, एंड्रॉइड प्रलेखन सीधे बताता है कि गतिविधियों में यूआई नहीं होना चाहिए, लेकिन मुझे ऐसा करने का तरीका नहीं मिला। (उत्तर 1 पहले से ही मेरी समस्या हल हो गया है) वैसे भी धन्यवाद। – shutou

उत्तर

17

अपने प्रकट उपयोग में है <activity> में

android:theme="@android:style/Theme.NoDisplay" 

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

+0

ग्रेट कॉल करें! मुझे ठीक इसी की आवश्यकता थी। निश्चित रूप से क्योंकि मैं नहीं चाहता कि मेरी प्रक्रिया पृष्ठभूमि में चलती रहें। धन्यवाद दोस्त! – shutou

+0

@shutou: यह संभवतः एक सेवा शुरू करने से अधिक ओवरहेड है (हालांकि मुझे कोई जानकारी नहीं है)। आपको पृष्ठभूमि में सेवा जारी रखने की आवश्यकता नहीं है। मेरे जवाब पर मेरी प्रतिक्रिया देखें। – Falmarri

+0

मैं अपनी लॉन्चर गतिविधि के रूप में एक एंट्री गतिविधि का उपयोग कर रहा हूं, क्योंकि वास्तविक गतिविधि को कुछ तर्क (जैसे परिचय, साइनअप, या सामग्री) द्वारा निर्धारित किया जाना चाहिए। इससे पहले प्रवेश गतिविधि भी दिखाएगी, जो परेशान था लेकिन अब गायब हो गई है! धन्यवाद – Meanman

-1

एक सेवा मेरी समस्या का जवाब नहीं है

हाँ, यह

+0

ठीक है, यह वही करने का एक वैकल्पिक तरीका हो सकता है जो मैं चाहता हूं, लेकिन जैसा कि उत्तर में देखा गया है, ऐप के यूआई के प्रदर्शन को बंद करना संभव है। और चूंकि मैं नहीं चाहता कि मेरे सरल ऐप के बाद पृष्ठभूमि प्रक्रियाएं चल रही हों, मुझे लगा कि एक सेवा मुझे जो चाहिए उससे ज्यादा हो सकती है। मैं मानता हूं, हालांकि, मुझे अभी भी यह सुनिश्चित करने के लिए पर्याप्त जानकारी नहीं है कि क्या सेवा 1 में दिए गए समाधान से अधिक कुशल हो सकती है, जो मेरे ऐप को केवल एक न्यूनतम गतिविधि से बनने की अनुमति देती है जो किसी भी अतिरिक्त प्रक्रिया को नहीं बढ़ाती या धागे। पेशेवरों और विपक्षों को अधिक विस्तार से विचार करने के लिए मैं सेवाओं के बारे में और जान सकता हूं। धन्यवाद – shutou

+0

सेवाएं अतिरिक्त प्रक्रियाओं या धागे को नहीं बढ़ाती हैं। एक सेवा अनिवार्य रूप से एक जीयूआई के बिना एक गतिविधि है। मैंने स्रोत कोड का पूरी तरह से निरीक्षण नहीं किया है, लेकिन मैं लगभग बिल्कुल ठीक हूं। आपको सेवा चलने की जरूरत नहीं है। वास्तव में, ऐसा मत करो। बस सेवा शुरू करें, काम करें, और फिर 'stopSelf() ' – Falmarri

0

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

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