任务管理器如何关闭应用程序?

16
首先我知道在安卓中使用任务管理器/杀手是不好的,但我想知道像Advanced Task Killer这样的任务管理器是如何结束其他应用程序的?
我想开发一个简单的应用程序来学习这个过程。我尝试从我的应用程序执行Linux命令kill pid,但它没有起作用,也许需要root权限?
那么,我该如何从我的应用程序完成这个任务呢?我有一个简单的ListActivity,显示当前运行的任务,当用户长按项目时,我想结束该任务。

请查看https://dev59.com/2FTTa4cB1Zd3GeqPpBf4,其中涵盖了此内容。 - Mark Allison
1
谢谢,但我已经读过那篇帖子 :) 然而它并没有回答我的问题,Process.killProcess函数只允许我杀死自己的进程而不是其他人的,如果我没错的话。我也试过在我的应用程序上使用它,但它没有起作用:/ - Bhaskar Kandiyal
4个回答

12

您可以使用以下方式发送信号:

Process.sendSignal(pid, Process.SIGNAL_KILL);

为了完全终止进程,建议调用:

ActivityManager.killBackgroundProcesses(PackageName)

发送信号之前。


ActivityManager.killBackgroundProcesses在哪里?它说该方法未定义... - Taranasus
1
这是否真的会终止外部应用程序?我不太确定如何检查。ActivityManager.killBackgroundProcesses(PackageName); Process.sendSignal(pid,Process.SIGNAL_KILL); - user705944
它是这样吗?我有同样的问题。 - Rohit Tigga

1

slayton在这个问题中给出了很好的答案。我在他的回答中补充了以下细节:
- 当你使用ActivityManager.killBackgroundProcesses(PackageName)时,你不能杀死前台进程。

我在K_Anas'的这个问题的回答中看到了这些开源项目链接:
- github存储库
- code.google


0

试试这个,

android.os.Process.killProcess(pid)

那会起作用的...


-2

1- 添加到清单文件

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

2 - 在你的代码中

Runtime.getRuntime().exec("adb shell killall com.example.app");

注意:您的应用程序需要访问adb shell system/app(具有root权限)


4
需要root权限才能进行此操作。 - Yehonatan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接