2013-06-06 22 views
5

को खत्म करने के बाद टास्क मैनेजर में क्यों दिखाई देता है यदि कोई निश्चित शर्त पूरी हो गई तो मैं finish() पर कॉल कर रहा हूं। हालांकि, finish() के बाद भी यदि मैं होम बटन पकड़ता हूं तो भी मैं वहां अपना ऐप देख सकता हूं। यदि प्रक्रिया को मारना एक वांछनीय विकल्प नहीं है, तो मुझे क्या करना चाहिए?मेरा ऐप अभी भी

यह वह जगह है जहां मैं finish() फोन कर रहा हूँ:

protected void onStart() { 
............. 
if(today.equals("...")) 
finish(); 

    }; 

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

+0

'फिनिश()' केवल गतिविधि को मारता है, पूरे आवेदन में नहीं। तुम क्या करने की कोशिश कर रहे हो? आपको इसे जाने की आवश्यकता क्यों है? – dmon

+0

लेकिन मेरे ऐप में केवल एक गतिविधि है। केवल मुख्य। जावा। – ARMAGEDDON

+0

हाँ, लेकिन ऐसी कोई प्रक्रिया है जिसमें आपके पास कोई भी गतिविधियां हों, भले ही आपके पास केवल एक ही हो, और वह वही है जो अभी भी चल रहा है। – dmon

उत्तर

9

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

तो बुनियादी तौर पर आप इस सूची में अपने एप्लिकेशन देख सकते हैं, भले ही, इसका मतलब यह नहीं है कि यह वास्तव में चल रहा है।

+0

एकमात्र सही और सटीक उत्तर कम वोट वाला है (अब तक कम से कम)! आपको मेरा वोट मिला है! – thiagolr

+0

एप्लिकेशन 'ऑनस्ट्रोय() 'या' फिनिश() 'या' android.os.Process.killProcess (android.os.Process.myPid()) से बाहर निकलने के विभिन्न तरीकों को देखने के बाद; super.onDestroy(); 'onDestroy()' में '... वे सभी ने इस व्यवहार को जन्म दिया। मुझे यह देखकर खुशी हो रही है कि गतिविधि ढेर पर नहीं है और हाल ही के ऐप्स की सूची में छिपी हुई है। धन्यवाद! +1 – tricknology

+0

हालांकि यह सच है कि हाल ही में एक कार्य प्रबंधक नहीं है, यह श्रीकांत द्वारा किए गए मुख्य बिंदु को याद करता है, जो कि खत्म होता है() डिज़ाइन द्वारा नहीं किया जाता है जिसका उद्देश्य सामान्य रूप से प्रक्रिया समाप्त हो जाता है। –

5

फिनिश() आपके द्वारा किए गए एंड्रॉइड सिस्टम को बताता है। यह वास्तव में आपके आवेदन को मारने का फैसला करने के लिए एंड्रॉइड सिस्टम पर निर्भर है। यह तब तक आपके एप्लिकेशन को तब तक रखेगा जब तक ओएस को संसाधनों की आवश्यकता न हो। ओएस के लिए, ऐप को पुनरारंभ करने से आपके एप्लिकेशन को रैम में रखना सस्ता है। यह रणनीति अधिकांश आधुनिक ओएस के लिए सच है।

+0

में ऐप के भीतर प्रगति पट्टी को दिखाने में वास्तव में पेशेवर नहीं है, मुझे लगता है कि मुझे यह विचार मिलता है। – ARMAGEDDON

+0

जैसा कि @ पावेल दुडका ने उल्लेख किया है, होम बटन को लंबे समय तक दबाकर टास्क मैनेजर नहीं खुलता है, लेकिन हाल ही में लॉन्च किए गए ऐप्स की सूची खोलता है (कम से कम मैंने देखा फ़ोन पर)। –

5

यदि प्रक्रिया को मारना एक वांछनीय विकल्प नहीं है, तो मुझे क्या करना चाहिए?

कुछ भी नहीं, सबसे अधिक संभावना है।

मुझे पता है कि खत्म गतिविधि खत्म हो जाएगी लेकिन यह अभी भी कार्य प्रबंधक में क्यों दिखाई दे रही है?

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

ध्यान दें कि "कार्य प्रबंधक" पर विचार करने के आधार पर, आपका ऐप वैसे भी दिखाई दे सकता है, भले ही आपकी प्रक्रिया समाप्त हो। उदाहरण के लिए, लंबे समय से दबाए गए होम या रीसेन्ट बटन दबाकर "हालिया कार्य" लाते हैं, जिसमें कार्य शामिल होते हैं जिसके लिए प्रक्रिया समाप्त कर दी गई है।

यह वास्तव में पेशेवर आवेदन कार्य प्रबंधक

में अनुप्रयोग के भीतर प्रगति बार नहीं दिखाया जा रहा तरह है मुझे पता नहीं तुम ऐसा क्यों लगता है कि होगा। कहा जा रहा है कि, थंबनेल छवि के लिए उपयोग करने के लिए कुछ और करने के लिए आपको override onCreateThumbnail() in your activities पर आपका स्वागत है।

1

प्रक्रियाओं S uspended राज्य में रहने:

PID USER  VSZ STAT COMMAND 
--- ----  --- ---- ------- 
5846 root   0 SW< [ksdioirqd/mmc1] 
5853 u0_a76 306m S {android.youtube} com.google.android.youtube 
5897 root  1852 S /sbin/sh - 
5922 u0_a79 286m S {om.me.mygdxgame} com.me.mygdxgame 
5947 u0_a49 278m S {roid.dspmanager} com.bel.android.dspmanager 
5965 root  1844 R ps -w 

यहां तक ​​कि जब सभी गतिविधियां बंद हो जाती हैं।

बहुत जगह होने पर रैम में सामान को लोड करने में कोई हानि नहीं है। अस्थिर रैम आईसी बिजली, खाली या पूर्ण उपभोग करता है।निलंबित प्रक्रिया CPU को हॉग नहीं करती है। अंतरिक्ष की आवश्यकता होने पर इन प्रक्रियाओं को समाप्त कर दिया जाएगा। तब तक, वे जल्दी से पुनः शुरू करने के लिए काम करते हैं और ओएस तेजी से बनाते हैं।

स्थितियों जब आप चल रही प्रक्रियाओं को देखने के लिए की आवश्यकता होगी:

  1. खराब प्रबंधित दूर रन धागे। आप एक धागा शुरू करते हैं जो लूप चलाता है, यह नहीं पता कि यह कभी खत्म हो जाएगा, और शीर्ष पर सभी संदर्भों को ढीला कर देगा।
  2. खराब तरीके से लागू किया गया, और अक्सर, लीक सेवाएं। सिस्टम मैनेजर/सेवा के साथ सेवा पंजीकृत करना और को अनधिकृत करना भूलना।
  3. सिस्टम प्रक्रिया Runtime.exec() के माध्यम से चलती है, और destroy() पर कॉल करने के लिए भूल जाती है।

यदि आप केवल साधारण एंड्रॉइड घटकों से निपट रहे हैं और अपने जीवन चक्र को सही तरीके से कार्यान्वित कर चुके हैं। आपको आंतरिक प्रक्रियाओं के बारे में चिंता करने की आवश्यकता नहीं है।

5

finishAndRemoveTask() नया एपीआई है कि दस्तावेज के अनुसार "इस कार्य में सभी गतिविधियों को समाप्त करता है और इसे हालिया कार्यों की सूची से हटा देता है।"

if(android.os.Build.VERSION.SDK_INT >= 21) 
{ 
    finishAndRemoveTask(); 
} 
else 
{ 
    finish(); 
} 
संबंधित मुद्दे