Android任务管理器源码

时间:2012-07-15 18:48:24

标签: android android-layout android-intent android-source

我想知道是否有任何开源的android任务管理器(进程管理器/进程细节)项目,我可以看看。我正在为我的uni项目开发一个应用程序,它可以帮助我了解一个好的任务管理器!有没有人知道一些我可以阅读或查看源代码的开源项目!我不需要下载源代码。

谢谢你!

3 个答案:

答案 0 :(得分:4)

简而言之,Task Killers通过轮询操作系统来查找当前正在运行的进程及其消耗的内存列表。然后,通过智能算法或用户输入,任务杀手向系统发出呼叫,告知系统终止进程。你可以做两个apis。

他们是:

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的软件包也可以杀死彼此的进程。 调用此方法时,信号由OS生成并发送到进程。每当进程从OS接收信号时,它必须处理该信号或立即死亡。 SIG_KILL等信号无法处理,导致收件人进程立即死亡。如果你想杀死你没有权限杀死的进程,即它不是你的进程,那么你必须切换用户或升级你的权限(在Android上这需要设备上的root权限)。

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

在Android Docs中,它说这个API实际上使用了第一个Process.killProcess API

让系统立即终止与给定包关联的所有后台进程。这与杀死那些进程以回收内存的内核相同;系统将根据需要在将来重新启动这些流程。 如果您想了解更多,我建议您阅读有关Posix信号和Linux kill命令的信息

答案 1 :(得分:3)

你必须看看 Astrid任务管理器这是一个开源的Android应用程序,你可以在这个github repository中获取源代码。您也可以对此project感兴趣。

答案 2 :(得分:-1)

看看fossil,为了开发自己的应用程序,它有一个跟踪器以及您可能需要的所有其他所有内容。