【问题标题】:How do Task Managers kill apps?任务管理器如何杀死应用程序?
【发布时间】:2011-09-12 07:34:04
【问题描述】:

首先我知道在 Android 中使用任务管理器/杀手是不好的,但我想知道的是像 Advanced Task Killer 这样的任务管理器是如何杀死其他应用程序的?
我想开发一个简单的应用程序来做这件事,只是为了学习体验。
我尝试从我的应用程序中执行 Linux 命令 kill pid 但它不起作用,也许它需要 root?

那么,我如何从我的应用程序中实现这一点?我有一个简单的 ListActivity,它显示当前正在运行的任务,当用户长按一个项目时,我想终止该任务。

【问题讨论】:

  • 谢谢,但我已经阅读了那篇文章 :) 虽然它没有回答我的问题,但 Process.killProcess 函数只允许一个人杀死我自己的进程,而不是其他人,如果我是没有错。我也在我的应用程序上尝试过,但没有用:/

标签: android taskmanager


【解决方案1】:

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 权限)

【讨论】:

  • 这个需要root权限
【解决方案2】:

slayton 在this question 中有很好的答案。我在他的答案中添加了这个细节:
- 当你使用ActivityManager.killBackgroundProcesses(PackageName) 时,你不能杀死前台进程。

我在 K_Anas 对this question 的回答中看到了这些开源项目链接:
- github repository
- code.google

【讨论】:

    【解决方案3】:

    试试这个,

    android.os.Process.killProcess(pid)
    

    这会起作用的......

    【讨论】:

      【解决方案4】:

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

      Process.sendSignal(pid, Process.SIGNAL_KILL);
      

      要彻底杀死进程,建议调用:

      ActivityManager.killBackgroundProcesses(PackageName)
      

      在发送信号之前。

      【讨论】:

      • ActivityManager.killBackgroundProcesses 在哪里...它说该方法未定义...
      • 那么这真的会杀死外部应用程序吗?我不确定如何检查这个。 ActivityManager.killBackgroundProcesses(PackageName); Process.sendSignal(pid, Process.SIGNAL_KILL);
      • 是吗?我有同样的问题
      猜你喜欢
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多