2012-01-09 10 views
6

मैं अपने आवेदन में ActivityManager.killBackgroundProcesses के साथ प्रयोग कर रहा था और कुछ दिलचस्प नोटिस करता था। मुझे उम्मीद है कि स्टैक ओवरफ्लो पर कोई इस पर कुछ प्रकाश डाल सकता है।ActivityManager.killBackgroundProcesses "फोर्स स्टॉप" से अलग

तो यदि मैं एक एप्लिकेशन शुरू करता हूं, उदाहरण के लिए, यूट्यूब, मुझे पहले वीडियो पेज की सूची दिखाई देती है, तो मैं मेनू-> सेटिंग्स पर क्लिक करता हूं, मुझे सेटिंग्स पृष्ठ मिल जाएगा। अब अगर मैं होम बटन पर क्लिक करता हूं, जो यूट्यूब को पृष्ठभूमि में रखेगा। अब तक तो सब ठीक है। अब अगर मैं यूट्यूब एप्लिकेशन को मारने के लिए ActivityManager.killBackgroundProcesses चलाता हूं (या मैं उन्नत कार्य हत्यारा का उपयोग करता हूं जो मुझे एक ही एपीआई का उपयोग करने पर विश्वास करता है), और जब मैं फिर से यूट्यूब लॉन्च करता हूं, तो मुझे सेटिंग पृष्ठ दिखाई देता है, न कि वीडियो पेज की डिफ़ॉल्ट सूची।

लेकिन अगर ActivityManager.killBackgroundProcesses करने की बजाय, मैं सिस्टम सेटिंग्स-> एप्लिकेशन प्रबंधित करें-> यूट्यूब-> फोर्स स्टॉप, और जब मैं फिर से यूट्यूब लॉन्च करता हूं, तो मुझे वीडियो पेज की सूची मिलती है, सेटिंग पृष्ठ नहीं।

तो ऐसा लगता है कि ActivityManager.killBackgroundProcesses बल स्टॉप से ​​अलग है क्योंकि यह अभी भी अंतिम कार्य/पृष्ठ को पृष्ठभूमि में रखे जाने से पहले याद करता है, जबकि बल स्टॉप आपको एक नई शुरुआत देता है।

किसी के पास इसके लिए अच्छी व्याख्या है? क्या मेरे कोड में एप्लिकेशन की ताजा शुरुआत करने के लिए "फोर्स स्टॉप" करना संभव है?

बहुत धन्यवाद!

+0

बस स्पष्ट करने के लिए, मैं जिस ऐप को मारने/पुनरारंभ करने की कोशिश कर रहा हूं वह तीसरे पक्ष के ऐप्स हैं, जैसे जीमेल, यूट्यूब इत्यादि, जिन्हें मैं अपना कोड नहीं बदल सकता। – Safecoder

+0

Google पर एक पुरानी पोस्ट से मिला। http://groups.google.com/group/android-developers/browse_thread/thread/d8fc993c54fe76e1 तो ऐसा लगता है कि "फोर्स स्टॉप" को पुनरारंभ पैकेज के साथ कार्यान्वित किया गया था, लेकिन 2.2 में, रीस्टार्टपैकेज मूल रूप से हटा दिया गया था और यह मूल रूप से killbackgroundprocess के समान होता है । मैं अनुमान लगा रहा हूं कि 2.2 और बाद में प्रक्रिया को मारने के लिए एक नई एपीआई का उपयोग करना होगा, लेकिन यह दस्तावेज नहीं है ... – Safecoder

उत्तर

1

ठीक है, मैं कैसे वास्तव में इसका इस्तेमाल करते हैं, जैसा कि मैंने मेरा की तुलना में अन्य एप्लिकेशन के साथ पहले की कोशिश कभी नहीं किया है यकीन है कि नहीं हूँ, लेकिन mayby ​​यह मदद मिलेगी - का उपयोग कर के बारे में सोचना: android.os.Process.killProcess(android.os.Process.myPid());

और अपने प्रश्न क्यों प्रणाली बंद कर सकते हैं और के बारे में आप नहीं कर सकते सच्चाई यह है कि प्रणाली और अधिक हो सकती है। अधिक specyfic, जब आप बल स्टॉप बटन सिस्टम दबाते हैं तो दिए गए पिड के साथ प्रक्रिया करने के लिए मार सिग्नल (सिग्नल 9) भेज रहा है।

यही कारण है कि मुझे लगता है कि उपर्युक्त फ़ंक्शन को मदद करनी चाहिए, क्योंकि यह लगभग भेज रहा है, अगर बिल्कुल ठीक नहीं है, सिग्नल।

आशा है कि इससे मदद मिलेगी।

+0

सुझाव के लिए धन्यवाद। लेकिन यह मेरे मामले में मदद नहीं करता है। killProcess उन अनुप्रयोगों को नहीं मार पाएगा जिनके पास मेरा स्वामित्व नहीं है, उदाहरण के लिए, जीमेल, यूट्यूब, आदि। मैंने कोशिश की और इसका उन ऐप्स पर कोई प्रभाव नहीं पड़ा। – Safecoder

0

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

सेटिंग्स सिस्टम एप्लिकेशन है, इसलिए इसीलिए आपके ऐप से अधिक पहुंच है।

तो, ऐसा लगता है कि ओएस आपको ऐप्स को मारने की अनुमति नहीं देता है। निश्चित नहीं है, लेकिन अपने ऐप परमिट की जांच करने का प्रयास करें - शायद समाधान वहां है।

+0

हां और नहीं। killBackgroundProcesses आपको प्रक्रिया को बंद करने की अनुमति देता है, लेकिन ऐसा लगता है कि यह बल के करीब एक "कठिन" बंद नहीं है। यह अभी भी पिछली बार से कुछ राज्य बनाए रखता है जैसे याद रखना कि यह आखिरी बार कहां से छोड़ा गया था। – Safecoder

+0

क्या एप्लिकेशन .killBackgroundProcesses के बाद "सेटिंग्स-> एप्लिकेशन प्रबंधित करें" में रहता है? –

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