退出/关闭应用程序[重复]
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,了解一些有价值的原因。
【讨论】:
以上是关于退出/关闭应用程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章