关于android:退出/关闭应用程序

Exit / Close Application

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Quitting an application - is that frowned upon?

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

谢谢


通常,向应用程序添加"退出"功能不是一个好主意。这不是Android的本质。首先阅读主题。


如果您不关心上一个打开的活动,那么在调用下一个活动之后,就在每个活动上调用finish

如果你真的很在意,只想在你点击上一个活动的退出按钮时把它们全部杀死,那么使用BroadcastReceivers

  • 创建一个这样的BaseActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
  • 每当要清除堆栈时:
1
2
3
Intent intent = new Intent("kill");
intent.setType("spartan!!!");
sendBroadcast(intent);


在onActivityResult()中捕获此结果,然后将其传播到堆栈中?


不要添加退出按钮。在Android世界里,这几乎毫无意义。阅读谷歌员工的这篇文章,了解一些有价值的原因。