Android 任务杀手是如何工作的?

Android 任务杀手是如何工作的?,android,task,kill-process,Android,Task,Kill Process,任务杀手应用程序的有用性存在争议,但我想知道:它们实际上是如何工作的?如何才能终止特定进程 是否有用于此的API,如果有,它实际上做什么 编辑 值得一提的是:我看到任务杀手应用程序杀死了非根设备上的进程。所以,我想知道,如何才能杀死Android中没有的进程?简而言之,自动任务杀手通过轮询操作系统以获取当前正在运行的进程列表及其消耗的内存来工作。然后,通过智能算法或用户输入,任务杀手向系统发出一个调用,告诉系统终止进程。有两个API可以实现这一点 是的 Process.killProcess(

任务杀手
应用程序的有用性存在争议,但我想知道:它们实际上是如何工作的?如何才能终止特定进程

是否有用于此的API,如果有,它实际上做什么

编辑


值得一提的是:我看到任务杀手应用程序杀死了
非根设备上的进程。所以,我想知道,如何才能杀死Android中没有的进程?

简而言之,自动任务杀手通过轮询操作系统以获取当前正在运行的进程列表及其消耗的内存来工作。然后,通过智能算法或用户输入,任务杀手向系统发出一个调用,告诉系统终止进程。有两个API可以实现这一点

是的

  • Process.killProcess(int-pid)
  • ActivityManager.killbackgroundprocesss(字符串packageName)
这首先通过调用
Process.killProcess(intpid)
工作,其中
pid
是特定进程的唯一标识符。Android以与linux相同的方式杀死进程;但是,用户只能终止自己拥有的进程。在Android中,每个应用程序都使用唯一的UID(用户ID)运行。使用此API的应用程序一个应用程序只能终止其自己的进程,因此出现以下情况:

使用给定的PID终止进程。注意,尽管此API允许 如果我们根据进程的PID请求终止任何进程,内核将 仍然对您实际能够使用的PID施加标准限制 杀人。通常这意味着只有运行调用方的 软件包/应用程序以及该应用程序创建的任何其他流程; 共享公共UID的包也将能够杀死彼此的 过程

当调用此方法时,将由操作系统生成并发送到进程。每当进程接收到来自操作系统的信号时,它必须要么处理该信号,要么立即停止。诸如
SIG_KILL
之类的信号无法处理,并导致接收方进程立即死亡。如果您想杀死您没有权限杀死的进程,即它不是您的进程,那么您必须切换用户或升级您的权限(在android上,这需要设备上的root权限)

第二个API的工作原理是告诉内置的
ActivityManager
,您希望终止与特定包关联的进程此API绕过了UID与进程的UID匹配的需要,因为它要求用户接受
KILL\u BACKGROUND\u进程
权限。此权限向操作系统发出信号,表明某个应用程序已被用户批准为任务杀手。当任务杀手想要杀死一个应用程序时,它会告诉操作系统杀死该进程,从而允许应用程序绕过只能杀死其拥有的进程的问题

让系统立即终止所有相关的后台进程 使用给定的包。这与内核杀掉它们是一样的 回收内存的进程;系统将负责重新启动 这些过程将在未来根据需要进行


如果你想知道更多,我建议你读一读关于and

应该是开的,我认为这是一个属于SO的实际问题:他想知道为什么以及如何在程序上可以在android上终止进程。在我看来,这是一个与编程相关的问题,也是一个非常有趣的问题。对于android/多任务:结束这个问题真的很奇怪。它与编程有关。我不明白理解系统进程模型的内部工作对Android开发者来说是多么的不重要。是的,这个问题可能会在。。。但在理想情况下,您会得到一个以开发人员为中心的答案。