Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:杀死进程并关闭应用程序_Android_Process - Fatal编程技术网

Android:杀死进程并关闭应用程序

Android:杀死进程并关闭应用程序,android,process,Android,Process,我正在开发一个简单的任务管理器,它允许用户终止正在运行的进程并终止应用程序。Im使用以下命令获取正在运行的进程列表: List<RunningAppProcessInfo> procInfo = activityManager.getRunningAppProcesses(); 但我真的不知道怎么做。我应该继续跑什么,杀什么才安全?我正在使用 applicationManager.killBackgroundProcesses(process); 终止我的进程。我的下一个问题是,

我正在开发一个简单的任务管理器,它允许用户终止正在运行的进程并终止应用程序。Im使用以下命令获取正在运行的进程列表:

List<RunningAppProcessInfo> procInfo = activityManager.getRunningAppProcesses();
但我真的不知道怎么做。我应该继续跑什么,杀什么才安全?我正在使用

applicationManager.killBackgroundProcesses(process);
终止我的进程。我的下一个问题是,这是终止进程的最佳方式吗?因为当我这样做的时候,然后我再次打开一个所有进程都被终止的应用程序,我发现我自己不是在它的主要活动中,而是在我离开它的地方,所以我知道应用程序从未终止,即使它的所有进程都被终止。此外,我发现该应用程序处于一种非常荒凉的状态(图像视图和按钮缺失,文本视图不在它们应该在的位置)。请注意,这个应用程序也是由我自己编写的,通常它工作得非常好

我的最后一个问题是,当终止进程的问题得到解决时,我还想终止选定的应用程序。如何获取正在运行的应用程序列表?我想得到一个正在运行的进程列表,然后从该列表中获取应用程序。之后,通过终止所选应用程序的所有进程来终止该应用程序。但我不认为这是最好的方法,因为当我杀死所有进程时,它显然不起作用


谢谢你的回复

杀掉Android中的应用通常被认为是个坏主意。这是因为安卓操作系统设计用于处理所有任务管理。通常,当一个项目被列为在Android操作系统上运行时,它甚至不消耗资源。如果系统确实需要更多资源,它将正确关闭应用程序。如果应用程序未正确关闭(即被任务杀手关闭),它可能会产生许多不良副作用

此外,应用程序正在“运行”并不意味着它有一个进程正在运行。如果您查看ActivityManager的文档,它会这样说

您可以检索有关当前在系统中“运行”的特定任务的信息。请注意,正在运行的任务并不意味着给定的任务实际上有一个正在运行的进程;这仅仅意味着用户已经去了它,并且从来没有关闭过它,但是当前系统可能已经终止了它的进程,并且仅仅保持它的最后状态,以便在用户返回时重新启动它

killbackgroundprocesss()会像Android操作系统那样(当它需要更多内存时)杀死进程,因此它很可能会保留其最后状态,因为它认为它被杀死是因为系统需要更多的资源。从而使系统相信用户可能希望返回应用程序(为什么它保持其最后状态)


无论如何,在您阅读了上面的内容并且仍然希望编写任务杀手之后,您可能会发现查看开源任务杀手是有益的。代码可以在这里看到:

杀掉Android中的应用通常被认为是个坏主意。这是因为安卓操作系统设计用于处理所有任务管理。通常,当一个项目被列为在Android操作系统上运行时,它甚至不消耗资源。如果系统确实需要更多资源,它将正确关闭应用程序。如果应用程序未正确关闭(即被任务杀手关闭),它可能会产生许多不良副作用

此外,应用程序正在“运行”并不意味着它有一个进程正在运行。如果您查看ActivityManager的文档,它会这样说

您可以检索有关当前在系统中“运行”的特定任务的信息。请注意,正在运行的任务并不意味着给定的任务实际上有一个正在运行的进程;这仅仅意味着用户已经去了它,并且从来没有关闭过它,但是当前系统可能已经终止了它的进程,并且仅仅保持它的最后状态,以便在用户返回时重新启动它

killbackgroundprocesss()会像Android操作系统那样(当它需要更多内存时)杀死进程,因此它很可能会保留其最后状态,因为它认为它被杀死是因为系统需要更多的资源。从而使系统相信用户可能希望返回应用程序(为什么它保持其最后状态)

无论如何,在您阅读了上面的内容并且仍然希望编写任务杀手之后,您可能会发现查看开源任务杀手是有益的。代码可以在这里看到:

int importance = procInfo.get(i).importance
applicationManager.killBackgroundProcesses(process);