2012-03-05 156 views
15

我不想讨论用户是否可以杀死一个进程,无论它是否应该这样做。以编程方式杀死另一个进程/应用程序

我只想知道几乎每个Android手机的手机都有'advanced task killer'这会杀死一个进程,或者force close(在设置中)选项工作得很好。我尝试过很多方法来杀死一个进程,但都没有结果。但是当我看到这些'advanced task killer'时,我无法弄清楚我身边有什么问题。

+1

参见:http://stackoverflow.com/questions/6303615/how-do-task-managers-kill-apps – 2012-03-05 08:29:03

+0

@anothem:我看过那篇文章,发现Process.sendSignal(pid,Process.SIGNAL_KILL);给出了一个无法解决的错误。 – AbhishekB 2012-03-05 08:38:21

+0

你能显示确切的错误和堆栈跟踪吗? – 2012-03-05 09:26:07

回答

1

尝试android.os.Process

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

当它从法顾名思义,你只能通过这种方法杀死你自己的过程。

+0

尝试使用它。does没有帮助。Process.killProcess功能只允许我杀死我自己的进程而不是其他人 – AbhishekB 2012-03-05 08:34:31

+0

你会得到什么错误? – 2012-03-05 09:47:39

+0

没有error.it只是不工作 – AbhishekB 2012-03-05 10:19:47

-1

假设您已经以A - > B - > C - > D的顺序启动活动,并将A作为您的主要和启动器活动。

你甚至不能通过在你的D活动中调用Process.KillProcess(int pid)方法来杀死你的应用程序的进程。您需要杀死每个活动D - C - B - A(以相反的顺序)以杀死进程。

因此,杀死其他应用程序进程是不可能的。

+0

实际上vishal它甚至不喜欢你必须尝试完成()。这不会杀死进程.U可以在设置 - >运行选项卡中检查该进程。ü应用程序仍然保留在后台 – AbhishekB 2012-03-05 10:24:04

+0

“所以杀死其他应用程序进程是没有问题的”那是我的point.how'高级任务杀手'工作呢? – AbhishekB 2012-03-05 10:25:20

+1

这简直是不真实的。 **你可以杀死你自己拥有的任何进程**,但是Android可能会为此感到惊讶,因此可能决定它应该开始替换死亡进程。 – 2013-12-06 15:48:54

15

您可以使用ActivityManagerkillBackgroundProcesses()方法:

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

请注意,您的应用需要拥有KILL_BACKGROUND_PROCESSES许可。因此,在AndroidManifest.xml中,你需要包括:

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

它不起作用 – 2015-06-16 11:41:03

+3

它不起作用 – 2016-01-21 13:08:27

+2

它确实有效,在**后台**进程 – lelloman 2017-08-03 07:36:56