【问题标题】:How to kill an Android app and all running service/tasks from another service?如何从另一个服务中杀死一个 Android 应用程序和所有正在运行的服务/任务?
【发布时间】:2012-01-28 23:04:58
【问题描述】:

我正在编写一个应用程序,它会拦截应用程序的启动,杀死它们,然后在满足某些权限时重新启动它们。通过拥有一个监控系统日志的服务,我设法弄清楚了第一部分(启动应用程序)。我现在正在努力杀死刚刚启动的应用程序。我正在尝试使用:

ActivityManager.killBackgroundProcesses(packageName);

但我不确定这是否会杀死整个应用程序,包括它启动的所有服务/任务。我尝试使用 killBackgroundProcesses() 不加选择地杀死所有正在启动的应用程序,但该应用程序似乎仍在启动。

我也尝试过 android.os.Process.killProcess(pid),传递了另一个应用程序的 pid,但是应用程序似乎仍然可以启动。

【问题讨论】:

    标签: android


    【解决方案1】:

    每个Activity都有自己的processID,而service没有自己的id什么的,service是Activity的一部分。当您杀死活动进程时,它也会停止所有部分任务或服务

    参考http://developer.android.com/resources/faq/framework.html

    【讨论】:

    • 谢谢。因此,如果我终止该进程,它将停止应用程序的所有部分运行并将其从内存中删除?我怎样才能杀死另一个应用程序的进程呢?我试过 android.os.Process.killProcess(pid) 但这没有用。当我尝试从 adb shell 中“杀死 pid”时,它仍然有效。
    • 所以似乎一个服务根本没有办法杀死另一个进程/应用程序?
    • 因此,我没有杀死应用程序 A,而是尝试向另一个活动 B 抛出一个意图,希望它会停止执行原始应用程序 A。它似乎有效,因为我尝试了一个非常简单的应用程序 A 在其 onCreate() 中向日志写入一行,直到我退出活动 B 后才写入该行。我想这是我能做的最好的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    相关资源
    最近更新 更多