2012-03-05 12 views
15

मैं इस बात पर चर्चा नहीं करना चाहता हूं कि उपयोगकर्ता द्वारा प्रक्रिया को मार दिया जा सकता है या नहीं, चाहे वह ऐसा किया जाए या नहीं।प्रोग्रामिंग के लिए अन्य प्रक्रिया/एप्लिकेशन को मारें

मैं सिर्फ यह जानना चाहता हूं कि लगभग हर एंड्रॉइड प्लेयर के फोन को 'advanced task killer' मिल गया है जो प्रक्रिया को मारता है या यह कैसे है कि force close (सेटिंग्स में) विकल्प ठीक काम करता है। मैंने प्रक्रिया को मारने के कई तरीकों की कोशिश की है, लेकिन बिना परिणाम के सभी। लेकिन जब मैं इन 'advanced task killer' को देखता हूं, तो मुझे पता नहीं चल सकता कि मेरी तरफ क्या गलत है।

+1

देखें: http://stackoverflow.com/questions/6303615/how-do-task-managers-kill-apps –

+0

@anothem: मैंने उस पोस्ट को देखा है और पाया है कि Process.sendSignal (pid, Process.SIGNAL_KILL); एक त्रुटि देता है कि इसे हल नहीं किया जा सकता है। – AbhishekB

+0

क्या आप सही त्रुटि और स्टैक ट्रेस दिखा सकते हैं? –

उत्तर

1

android.os.Process का प्रयास करें:

void killMyProcess() { 
    Process.killProcess(Process.myPid()); 
} 

यह विधि नाम से स्पष्ट है, आप केवल अपनी प्रक्रिया इस दृष्टिकोण का उपयोग करके मार सकते हैं।

+0

इसका उपयोग करने का प्रयास किया। मदद नहीं करता है। प्रक्रिया। KillProcess फ़ंक्शन केवल मुझे अपनी प्रक्रिया को मारने की अनुमति देता है और अन्य नहीं – AbhishekB

+0

आपको क्या त्रुटि मिलती है? –

+0

कोई त्रुटि नहीं है। यह सिर्फ – AbhishekB

-1

मान लीजिए कि आपने ए -> बी -> सी -> डी के साथ ए मुख्य और लॉन्चर गतिविधि के रूप में ऑर्डर लॉन्च किया है।

आप अपनी डी गतिविधि में Process.KillProcess(int pid) विधि को कॉल करके अपने एप्लिकेशन की प्रक्रिया को भी मार नहीं सकते हैं। प्रक्रिया को मारने के लिए आपको प्रत्येक गतिविधि डी-सी - बी - ए (रिवर्स ऑर्डर में) को मारने की जरूरत है।

इसलिए अन्य आवेदन प्रक्रियाओं को मारना सवाल से बाहर है।

ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE); 
    am.killBackgroundProcesses(packageName); 

कृपया ध्यान दें, अपने अनुप्रयोग KILL_BACKGROUND_PROCESSES अनुमति के मालिक हैं की जरूरत है:

+0

वास्तव में इसे पसंद नहीं करता कि आपने फिनिश() को पूरा करने की कोशिश की होगी। जो प्रक्रिया को मार नहीं पाता है। यू इसे सेटिंग में देख सकता है-> रनिंग टैब।उर एप्लिकेशन अभी भी पृष्ठभूमि में रहता है – AbhishekB

+0

"तो अन्य अनुप्रयोग प्रक्रियाओं को मारना सवाल से बाहर है" मेरा मुद्दा है। तब 'उन्नत कार्य हत्यारा' काम करता है? – AbhishekB

+1

यह बस असत्य है। ** आप अपने स्वामित्व वाली किसी भी प्रक्रिया को मार सकते हैं ** हालांकि, एंड्रॉइड इससे आश्चर्यचकित हो सकता है और नतीजतन यह तय कर सकता है कि इसे मारे गए प्रक्रिया के प्रतिस्थापन शुरू करना चाहिए। –

15

आप ActivityManager की killBackgroundProcesses() विधि का उपयोग कर सकते हैं। इस प्रकार, AndroidManifest.xml में, आप शामिल करने की जरूरत:

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 
+2

यह –

+3

काम नहीं करता है अपने काम नहीं कर रहा –

+2

यह कार्य करता है, पर ** पृष्ठभूमि ** प्रक्रियाओं – lelloman

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