Android关闭其他应用程序

我有一些代码将使用意图启动不同的应用程序,但我可以做什么来关闭或杀死其他应用程序?

这是启动代码(效果很好):

Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setComponent( new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, resolveInfo.activityInfo.name)); 

我试图杀死后台进程但没有运气:

 ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); activityManager.killBackgroundProcesses("com.pandora.android"); 

我也试过这个杀了它:

 context.stopService(new Intent(context, Class.forName("com.bla.bla"))); 

更新:

我想杀死其他应用程序,因为我启动了其他应用程序,用户已经请求了这个附加function(自动终止是自动启动的自然延伸)。 请回答如何在代码中完成此操作的问题。 我知道Advanced Task Mgr所以它有可能但是如何?

但是我可以做些什么来关闭或杀死其他应用程序?

你没有。 您的用户可以在需要时退出“其他应用”。

我最终找到了这个问题的真正答案。 请参阅自动关闭Android中的应用程序以获得解决方案!

基本答案,你不能。 从Froyo开始,唯一可用的工具是ActivityManager.killBackgroundProcess(),它包括:

(a)只允许你在后台杀死进程,而不是用户可见。 也就是说,它不允许您破坏其他应用程序的正常执行。

(b)无论如何都不需要,因为如果需要内存,Android会为你杀死后台进程。

你根本不需要做你现在似乎认为你做的事情。 “因为我的用户已经要求它”并不是一个绕过杀死其他人的进程的理由。

你可以使用Process.killProcess()吗? 你需要知道PID。 要获得PID,你可以执行“ps”,但这不会很健壮,因为文本输出格式可能在设备或版本之间有所不同。 您可以提供自己的本机库,以便为自己的目的将过程名称和ID收集到标准格式中。

杀死另一个“应用程序”的唯一正确方法是将某种意图发送到应用程序(例如潘多拉)或它的服务将要求它退出。

任务杀手使用Android之外的设施,如Process.killProcess() ,它与Linux内核而不是Android对话。 这种方法的问题在于它没有告诉Android关闭程序,而是直接使用Linux内核。 例如,如果后台服务被Context.stopService()而没有调用Context.stopService() ,Android可能会在以后自动重新启动它。 此外,killProcess不仅关闭Activity,它还会杀死所有组件,并且不允许它们正常关闭。

如果您使用Activity.startActivityForResult()启动Pandora,您可以尝试使用Activity.finishActivity()关闭它,但不能保证它将以您希望的方式工作。