如何通过一次简单的点击关闭Android中的所有活动

时间:2012-02-18 18:30:55

标签: android

我知道android关于堆栈的机制作为一个堆栈,每个堆栈都在彼此之上,我想要的是如何清除它并单击一下退出应用程序。 我谷歌它,我发现一些长代码,而不是这应该是非常容易和简单的。

感谢名单

5 个答案:

答案 0 :(得分:0)

您可以创建一些静态ArrayList并在其中注册每个新的Activity。之后,您将能够遍历每个项目并完成它。

祝福, 添

答案 1 :(得分:0)

您可以在菜单处理程序中添加QUIT选项:

public boolean onOptionsItemSelected(MenuItem item)
{
 if (item.getItemId() == MENU_QUIT_IDENTIFIER)
 {
  finish();
  System.exit(0);
  return (true);
 }
}

答案 2 :(得分:0)

Activity类具有复杂的生命周期机制。我在以下网址阅读了开发指南:

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

在尝试ArrayList路由之前。请记住,ArrayList不是安全的,系统可以随时销毁和重新创建活动。因此,列表中的活动将在您的应用程序堆栈之外,不符合Garabage Collection的条件(除非您使用Soft / Weak refreneces?)

答案 3 :(得分:0)

我知道没有好办法。有一件事是肯定的。您不应该使用System.exit或将活动保存在列表中(可怕的内存泄漏)。

您可以使用startActivityForResult启动堆栈上的所有活动,并使用一些结果代码,例如RESULT_UNWIND_STACK = 100;

然后在每个活动

中实现此功能
onBackPressed() {
    finishAndUnwindStack();
}

private void finishAndUnwindStack() {
    setResult(RESULT_UNWIND_STACK);
    finish();
}

protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_UNWIND_STACK) {
        finishAndUnwindStack();
    }
}

这将导致活动一个接一个地完成(快速并在变为可见之前)。

如果您的目标是3.0+,您可以拥有一个始终开始的启动活动,并在完成时调用该活动并添加标志FLAG_ACTIVITY_CLEAR_TASK和一个表示您已完成的布尔值。如果设置了布尔值,则在onCreate中完成(使用getIntent())。

答案 4 :(得分:0)

根据你对原始问题的评论,看起来你只关心内存和电池使用情况。如果不是这样,请随时停止阅读。如果是,我建议你阅读Activity's Lifecycle。当应用程序到达不再因任何原因而被主动使用的点时,OS会调用其onPause()方法,该方法(最佳地)在结束实际进程之前存储任何所需数据。如果再次重新启动活动,onResume()方法将重新加载任何数据。这允许应用程序在后台运行,对整体性能和内存的影响最小。如果由于某种原因操作系统需要释放任何内存,它可以安全地结束处于暂停状态的任何活动。