【问题标题】:Kill all recent applications in android杀死所有最近在android中的应用程序
【发布时间】:2012-07-27 07:45:26
【问题描述】:

当我在我的 android 设备中长时间按主页键时。我会得到所有最近应用程序的列表。现在我想从我的应用程序中以编程方式杀死我最近的所有应用程序。 我能够获取所有最近应用程序的列表,但无法杀死所有应用程序。

我想用android 4.x版本来实现

谁能指导我?

【问题讨论】:

    标签: android android-activity launcher android-applicationinfo


    【解决方案1】:

    首先使用以下命令获取RunningTaskInfo 记录列表:

     [public List<ActivityManager.RunningTaskInfo> getRunningTasks (int maxNum)][1]
    

    Reference

    之后,您可以使用该列表中的进程 ID 来终止相关进程 使用任一

    activityManager.killBackgroundProcess(pid);
                        or
    android.os.Process.killProcess(pid);
    

    取决于您是否可以终止该进程。杀死这些的方法详细here

    【讨论】:

    • 我按照您的指导尝试了,但所有最近的应用程序仍然存在。您能否指导我更多如何实现它?
    • 查看this 获取有关杀死进程的指导,您没有直接杀死这些进程的权限
    • 所以你的意思是你需要有一个root手机和杀戮应用程序才能升级权限才能工作。
    • 没有。不。如果您通读该答案,您将看到The second API works by telling the built in ActivityManager that you want to kill processes associated with a specific Package. ,因为killProcess() 只能杀死属于该用户的进程。每个应用程序在 Dalvik VM 中作为不同的用户运行。因此,使用KILL_BACKGROUND_PROCESSES 权限的解决方法。 (Reference)
    • 我通过 ActivityManager.killBackgroundProcesses(String packageName) 进行了尝试,但它不起作用并且进程仍在运行。
    【解决方案2】:

    你可以试试Process.killProcess()。但它不会总是有效:

    杀死具有给定 PID 的进程。请注意,尽管此 API 允许 我们根据 PID 请求杀死任何进程,内核将 仍然对您实际能够使用的 PID 施加标准限制 杀。通常这意味着只有运行调用者的进程 包/应用程序以及该应用程序创建的任何其他进程; 共享一个通用 UID 的包也将能够杀死彼此的包 进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多