我想知道是否有任何开源 Android 任务管理器(流程管理器/流程细节器)项目可供我查看。我正在为我的大学项目开发一个应用程序,它将帮助我了解寻找一个好的任务管理器!有谁知道一些开源项目,我可以在其中阅读或查看源代码!我不需要下载源。
谢谢你!
简而言之,任务杀手的工作原理是轮询操作系统以获取当前正在运行的进程及其消耗的内存列表。然后,任务杀手通过智能算法或用户输入向系统发出调用,告诉系统终止进程。有两个 api 可以做到这一点。
他们是 :
Process.killProcess(int pid)
ActivityManager.killBackgroundProcesses(String packageName)
首先通过调用 Process.killProcess(int pid) 来实现,其中 pid 是特定进程的唯一标识符。 Android 终止进程的方式与 Linux 相同;但是,用户只能终止他们拥有的进程。在 Android 中,每个应用程序都使用唯一的 UID (UserID) 运行。使用此 API 的应用程序只能终止自己的进程,因此文档中对 Process.killProcess(int pid) 的解释如下:
终止具有给定 PID 的进程。请注意,虽然此 API 允许我们根据 PID 请求杀死任何进程,但内核仍然会对您实际能够杀死的 PID 施加标准限制。通常,这意味着仅运行调用者的包/应用程序的进程以及该应用程序创建的任何其他进程;共享公共 UID 的包也能够杀死彼此的进程。
当调用此方法时,操作系统会生成信号并将其发送到进程。每当一个进程从操作系统接收到一个信号时,它必须要么处理该信号,要么立即死亡。 SIG_KILL 等信号无法处理并导致接收进程立即死亡。如果您想终止您无权终止的进程,即它不是您的进程,那么您必须切换用户或升级您的权限(在 Android 上,这需要设备上的 root 权限)。
第二个 API 的工作原理是告诉内置的 ActivityManager 您想要终止与特定包关联的进程。此 API 不需要您的 UID 与进程的 UID 相匹配,因为它要求用户接受 KILL_BACKGROUND_PROCESSES 权限。此权限向操作系统发出信号,表明应用程序已被用户批准作为任务杀手。当任务杀手想要终止某个应用程序时,它会告诉操作系统终止该进程,从而使应用程序能够解决只能终止其拥有的进程的问题。
在 Android 文档中,它说这个 API 实际上使用了第一个 Process.killProcess API
让系统立即终止与给定包关联的所有后台进程。这和内核杀死那些进程来回收内存是一样的;系统将来会根据需要重新启动这些进程。
如果您想了解更多信息,我建议您阅读 Posix Signals 和 Linux Kill 命令
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)