退出/关闭应用程序[重复]

Posted

技术标签:

【中文标题】退出/关闭应用程序[重复]【英文标题】:Exit / Close Application [duplicate] 【发布时间】:2011-07-12 00:58:03 【问题描述】:

可能重复:Quitting an application - is that frowned upon?

我编写了一个 android 应用程序,它有 5 个活动。每个活动都是由它之前的活动开始的。 当用户进入最后一个活动时,我添加了一个“退出”按钮。 当按下这个按钮时,我调用finish(); 但是,这只会关闭当前活动,并且应用程序会返回到上一个活动。 按下退出按钮时是否有一种简单的方法可以终止所有活动。

谢谢

【问题讨论】:

这是重复的。请阅读马克的优秀answer。 【参考方案1】:

通常向应用添加“退出”功能并不是一个好主意。这不是 Android 的本质。请先阅读the topic。

【讨论】:

这不能回答问题,是吗?无论如何,+1!这是一篇不错的文章,我同意。【参考方案2】:

如果您不关心上次打开的活动,请在调用startActivity 调用下一个活动之后对每个活动调用finish

如果您确实关心,并且只想在您单击最后一个活动的退出按钮时将他们全部杀死,请使用BroadcastReceivers

像这样创建BaseActivity
public class BaseActivity extends Activity 
    private KillReceiver mKillReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        mKillReceiver = new KillReceiver();
        registerReceiver(mKillReceiver,
            IntentFilter.create("kill", "spartan!!!"));
    
    @Override
    protected void onDestroy() 
        super.onDestroy();
        unregisterReceiver(mKillReceiver);
    
    private final class KillReceiver extends BroadcastReceiver 
        @Override
        public void onReceive(Context context, Intent intent) 
            finish();
        
    


让您的活动扩展至 BaseActivity。 每当您想清除堆栈时:
Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);

【讨论】:

嘿克里斯蒂安,这个 GuiceActivity 类是什么?一种机器人? Ups... 这是我的项目之一。是的,它与 roboguice 有关,但与本案无关。让我编辑我的问题...感谢您的拍摄。【参考方案3】:

在 onActivityResult() 中捕获这个结果,然后通过堆栈传播它?

【讨论】:

这对我来说没有意义,并非所有活动都返回结果,如果您从应用程序堆栈之外的活动返回,该怎么办?【参考方案4】:

不要添加退出按钮。在 Android 世界中,它几乎毫无意义。阅读this article by a Google employee,了解一些有价值的原因。

【讨论】:

以上是关于退出/关闭应用程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在退出前安全地关闭所有线程[重复]

UITextField中的退出键盘[重复]

如何提供“退出”菜单项 [重复]

当用户突然关闭我的控制台应用程序时,是不是可以返回特定的退出代码? [复制]

Environment.Exit 没有关闭[重复]

在下次运行之前以后台模式关闭应用程序[重复]