如何以编程方式关闭应用程序?

时间:2010-11-04 17:31:47

标签: android

我正在寻找完全关闭我应用的按钮的代码。

我试过Google的一些东西,但我的应用程序仍在后台运行。我需要完全关闭它。有代码可以做到吗?

5 个答案:

答案 0 :(得分:7)

为什么你需要真正关闭你的应用程序?假设它只是一个普通的应用程序,没有运行任何后台服务或持有唤醒锁(你知道你是否正在做这些事情),系统可以很好地完成任务管理,并且如果它的背景和需要,将结束你的应用程序没有任何人工干预的RAM。通常情况下,如果你只是finish()你的基地Activity,这将自行发生,但几乎没有理由这样做。

(唯一的例外是如果你的Application以某种方式持有对已经完成的活动的引用,这可能导致丑陋的内存泄漏并使你的应用程序无法正常关闭,但你也可能知道你用一个重写的Application子类做任何可疑的事情。)

那就是:99%的时间如果你想强行关闭你的应用程序,你需要修复你的代码中的任何错误让你认为系统无法自己处理它,或者你需要重读再次documentation on the Android application lifecycle(因为在开始编写Android应用之前,您应该已经阅读了3次这样做了。))。

答案 1 :(得分:4)

也许此链接有助于developer page

我引用下面的部分,我认为可能对你有所帮助。

  

关闭组件

     

内容提供商仅处于活动状态   而它正在回应一个请求   来自ContentResolver。还有一个   广播接收器仅有效   而它正在回应广播   信息。所以没有必要   明确关闭这些组件。

     

另一方面,活动提供   用户界面。他们在一个   与...长期对话   用户可以保持活动状态,即使是   闲着,只要谈话   继续。同样,服务可能   也保持运行很长时间。   所以Android有关闭的方法   有序的活动和服务   方式:

     

可以通过调用finish()方法来关闭活动。一   活动可以关闭另一个   活动(一个开始的   startActivityForResult())通过调用   finishActivity()。

     

可以通过调用stopSelf()方法或通过调用来停止服务   调用Context.stopService()。

     

组件也可能会被关闭   系统何时不再存在   正在使用或Android必须   回收内存以获得更多活跃   组件。后面的部分,组件   生命周期,讨论了这种可能性   及其后果更详细。

答案 2 :(得分:4)

您可以从后台关闭所有活动,并在重新打开应用时从第一个活动开始

this.finish();
Intent intent = new Intent(getApplicationContext(), CloseApp.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

您可以从后台关闭所有活动,并在重新打开应用时从暂停活动[您关闭的地方]活动开始

    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

答案 3 :(得分:1)

Android不希望您关闭应用。 以下是对此的讨论: Is quitting an application frowned upon?

如果您真的想要这样做,无论出于何种原因,您需要关闭所有活动。 以下是关于如何做到这一点的讨论: Closing several android activities simultaneously

答案 4 :(得分:0)

请记住:

finish();

方法仅关闭当前活动。 如果您打开了多个活动,则应为每个活动调用finish()。

注意:结账服务不同。