顶级Android活动

时间:2013-10-10 03:54:22

标签: android android-intent

我正在尝试使用AppCompat抽屉创建一个基本应用程序,以及多个顶级活动(不是片段) - 我无法理解如何管理backstack - 我尝试了大约一百种不同的方法 - 但他们都需要某种奇怪的黑客来清理后台 - 或者完成现有的活动。

我有3项活动 - A,B& C. A& B是顶级,C是B的孩子

我想:

  • 在应用启动时启动活动A
  • 从A
  • 按后退按钮退出应用程序
  • 从抽屉启动活动B
  • 当我按下B
  • 的后退按钮时退出应用程序
  • 从活动B
  • 启动活动C.
  • 当我按下C
  • 的后退按钮时返回活动B.
  • 当我通过选择抽屉按钮从B或A从A或B从C开始B时,我应该将顶级活动恢复到它的香草状态。

我有:

protected void startActivity(Class activity) {
    final Intent intent = new Intent(this, activity);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    overridePendingTransition(0, 0);
}

基本上我传入ActivityA.class或ActivityB.class - 用这种方法 - 从B回来带我去A

使用HO_HISTORY,看起来没问题 - 但是从C退回退出应用程序

使用REORDER_TO_FRONT似乎什么都没做?

在startActivity完美运行后使用finish() - 除非您选择A或B两次(在这种情况下退出应用程序)

使用FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK以各种方式完美运行 - 除了在重新创建任务时超级讨厌的屏幕闪烁。而且表现很好......

帮助??

1 个答案:

答案 0 :(得分:1)

你不能在starActivity调用后立即调用finish()吗? (你也必须删除SINGLE_TOP标志 - 否则你会遇到从B到B时出现的行为 - > B)

相关问题