2012-03-05 20 views
15

Non voglio discutere la questione se un processo possa essere ucciso dall'utente, se debba essere fatto in quel modo o meno.Uccidere un altro processo/applicazione in modo programmatico

Voglio solo sapere come quasi il telefono di ogni giocatore Android ha un 'advanced task killer' che uccide un processo o come è che l'opzione force close (in impostazioni) funziona bene. Ho provato molti modi per uccidere un processo, ma tutto senza risultato. Ma quando vedo questi 'advanced task killer' non riesco a capire cosa c'è che non va dalla mia parte.

+1

See: http://stackoverflow.com/questions/6303615/how-do-task-managers-kill-apps –

+0

@anothem: Ho visto quel post e ho trovato che Process.sendSignal (pid, Process.SIGNAL_KILL); dà un errore che non può essere risolto. – AbhishekB

+0

Puoi mostrare l'errore esatto e la traccia dello stack? –

risposta

1

Prova android.os.Process:

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

quanto implica dal nome del metodo, si può uccidere solo il proprio processo utilizzando questo approccio.

+0

provato ad usarlo. Non aiuta. La funzione Process.killProcess mi consente solo di uccidere il mio processo e non altri – AbhishekB

+0

Che errore ottieni? –

+0

no error.it semplicemente non funziona – AbhishekB

-1

Supponiamo di aver avviato attività nell'ordine A -> B -> C -> D con A come attività principale e di avvio.

Non è nemmeno possibile interrompere il processo dell'applicazione chiamando il metodo Process.KillProcess(int pid) nell'attività D. Devi uccidere ogni attività D - C - B - A (in ordine inverso) per uccidere il processo.

Quindi non è possibile eliminare altri processi applicativi.

+0

effettivamente vishal non è nemmeno come che devi aver provato finish(). che non uccide il processo. Puoi verificarlo nelle impostazioni-> scheda In esecuzione.L'applicazione di Ur rimane ancora sullo sfondo – AbhishekB

+0

"Quindi non è più possibile uccidere altri processi di applicazione" questo è il mio punto. In che modo funziona il "task killer avanzato"? – AbhishekB

+1

Questo è semplicemente falso. ** Puoi uccidere qualsiasi processo che possiedi **, tuttavia Android potrebbe essere sorpreso da questo e, di conseguenza, forse decidere che dovrebbe iniziare una sostituzione per il processo ucciso. –

15

È possibile utilizzare il metodo killBackgroundProcesses() di ActivityManager:

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

prega di notare che la vostra applicazione ha bisogno di possedere il permesso KILL_BACKGROUND_PROCESSES. Così, nel AndroidManifest.xml, è necessario includere:

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

Non funziona –

+3

non funziona –

+2

Funziona, su processi ** background ** – lelloman

Problemi correlati