如何关闭整个应用程序?

时间:2012-06-12 06:18:58

标签: android android-intent

我是android的初学者。当我单击按钮 KILL选择的应用以关闭或终止特定(正在运行)的应用程序或所选应用程序时。我知道这是可能的。但是如何解决它。我的示例用户界面是http://answers.oreilly.com/index.php?app=core&module=attach&section=attach&attach_rel_module=post&attach_id=555我试图使用一些代码。但是所有代码都可以用于仅关闭活动。未封闭的申请。我可以尝试引用一些stackoverflow答案。但我不清楚任何事情。我的代码是

finish();
System.exit(0);
Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
android.os.Process.killProcess(android.os.Process.myPid());

请回复您的答案,评论对我有价值。感谢。

2 个答案:

答案 0 :(得分:1)

我知道这是可能的。

虽然不符合您的意愿。

android.os.Process.killProcess(android.os.Process.myPid());

documentation关于此方法的说明:

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

关于system.exit(0),请阅读this回答。并记住这一点。

关于finish()documentation清楚地说明了以下内容:

在您的活动完成后调用此选项并应关闭。

总结一下 - 不要试图制造任务杀手。 Android操作系统完美地处理了这一点。不要干涉它。

车轮已经发明并且使用得很完美,不要重新发明它。

请阅读this。您需要了解 Android不需要任务杀手。谷歌,你会发现很多这样的文章。

答案 1 :(得分:0)

使用restart应用程序而不是killProcess

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage("YOUR_PACKAGE_NAME");

restartPackage是killProcess方法的包装器。

使用以下权限使用restartPackage方法

<uses-permission android:name="android.permission.RESTART_PACKAGES" />