gpt4 book ai didi

android - 任务 killer 如何工作?

转载 作者:IT王子 更新时间:2023-10-29 00:06:23 30 4
gpt4 key购买 nike

task killer 应用程序的实用性存在争议,但我想知道:它们实际上是如何工作的?怎么可能杀死特定的进程?

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

编辑

值得补充的是:我看到任务 killer 应用程序会杀死 非 root 设备 上的进程。所以,我想知道如何杀死你在 Android 中不拥有的进程?

最佳答案

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

他们是

  • Process.killProcess(int pid)
  • ActivityManager.killBackgroundProcesses(String packageName)

这首先通过调用 Process.killProcess(int pid) 起作用,其中 pid 是特定进程的唯一标识符。 Android 以与 linux 相同的方式杀死进程;但是,用户只能杀死他们拥有的进程。在 Android 中,每个应用程序都使用唯一的 UID (UserID) 运行。使用此 API 的应用程序只能杀死自己的进程,因此以下 explanation in the docs for Process.killProcess(int pid) :

Kill the process with the given PID. Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.

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

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

Android Docs it says that this API actually uses the first Process.killProcess API

Have the system immediately kill all background processes associated with the given package. This is the same as the kernel killing those processes to reclaim memory; the system will take care of restarting these processes in the future as needed.

如果您想了解更多信息,我建议您阅读 Posix SignalsThe Linux kill command

关于android - 任务 killer 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502340/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com