我使用ActivityManager.killBackgroundProcesses()按程序包名称杀死进程。在我杀死一个不使用服务的应用程序(例如Calculator)之前,我可以看到TaskKiller中列出的应用程序,并且在使用killBackgroundProcesses之后,我看不到该图标。对于使用服务的应用程序,我遇到了麻烦。即使我杀了它,我仍然可以在TaskKiller中看到它。我假设这是因为使用START_STICKY的服务,但我怎样才能阻止它重新启动?你可以使用TaskKiller来终止服务(它需要一个额外的步骤,但它可以工作,所以它是可能的!)。例如,如果我尝试杀死Pandora,音乐将停止播放,但在打开TaskKiller时我仍然可以看到服务正在运行。杀应用程序vs杀服务
我使用遍历所有正在运行的进程,像这样来搜索:
为(RunningAppProcessInfo信息:activityManager.getRunningAppProcesses()){
当我发现这个过程中我要寻找我用killBackgroundProcesses。 如果我杀了一个没有服务的应用程序,我可以运行循环,看看它不再出现在循环中。当我用服务杀死一个应用程序时,我仍然可以在循环中看到相同的应用程序。
我需要使用什么机制来阻止服务重新启动,如同TaskKiller所做的那样?
请不要用典型的“你不应该这样做”或“Android不是为了这样做”而回答这个问题。我的用户要求我自动杀掉(不关闭)其他应用程序。 TaskKiller这样做的事实意味着这是可能的。
您正在攻击的应用程序的开发人员不理解您正在尝试执行的操作。 – CommonsWare
除了使用getRunningAppProcesses()之外,还可以尝试使用ActivityManager.getRunningServices()来查找进程。 – ciscogambo