我目前正在编写一个聊天应用程序。它基本上与 WhatsApp 非常相似:在启动时有最后一次对话概述。
当我想与某人开始新的对话时,我必须做/通过
- 上次对话概述活动(单击 + 查找对话伙伴)
- 课程活动(选择一门课程)
- 课程参与者活动(选择伙伴)
- 对话活动
所以这基本上是堆栈:[A1,A2,A3,A4]
现在,用户与某个课程成员进行了愉快的聊天,并希望返回上一次对话概述,但是当他按下后退按钮时,他将进入 A3,即“课程参与者活动”。
我希望用户通过按 A4 中的后退按钮返回 A1。
错误:[A1,A2,A3,A4] -> 返回 -> [A1,A2,A3]
正确:[A1,A2,A3,A4] -> 返回 -> [A1]
或者我可以想象
右:[A1,A2,A3] -> 开始 A4 -> [A1,A4]
提前致谢。
[编辑]
答案
结果证明是这两者的结合。
由于给定的谷歌约定,在 onOptionsItemSelected() 中我把它(当然是在 switch 案例中)。
final Intent intent = new Intent(this, MainPage.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
和
在清单中将 Activity A1 的 android:launchMode 定义为 singleTop。
为什么要组合?只需添加 FlatIntent.FLAG_ACTIVITY_CLEAR_TOP
即可杀死活动 A1。由于这是我的第一个活动,它包含了一些注册/检查实现。当我在它被销毁后再次启动此活动时,不必要地调用了 onCreate。
启动模式singletop
可以防止这种情况。