安卓任务管理器源码

3
我想知道是否有任何开源的Android任务管理器(进程管理器/进程详细信息)项目,我可以查看。我正在为我的大学项目开发一个应用程序,这将帮助我了解一个好的任务管理器的概念!有人知道一些开源项目,我可以阅读或查看源代码吗?我不需要下载源代码。
谢谢!

Stack Overflow不能替代一个好的搜索引擎。 - Robert Harvey
http://code.google.com/p/android-task-manager/ - Mohsin Naeem
3个回答

4
简而言之,任务管理器通过轮询操作系统获取当前正在运行的进程列表及其消耗的内存。然后,使用智能算法或用户输入,任务管理器向系统发出调用,告诉系统终止该进程。您可以使用两个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命令的内容。


3

你需要看看Astrid任务管理器,它是一个开源的安卓应用程序,你可以在这个Github代码库中获取源代码。你也可能对这个项目感兴趣。


2
Astrid不是一个进程管理器,而freetaskmanager太旧了,不能直接构建。 - superarts.org

-1

看看化石,它集成了跟踪器和其他你可能需要的一切,非常适合开发自己的应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接