您好(我在这里的第一个问题 ;-)
可能有类似的问题,但他们似乎都没有回答我的问题或给我一个真正的解决方案......
问题
A
(根)开始B
。B
可以开始其他活动。A
决定解除堆栈(网络连接丢失)并开始C
。这似乎是一个激进的决定,但用户会期望这一点,在这种情况下这真的很有意义......
问题
如何做到这一点?我希望使用某个标志或只是调用类似dismissStack
. 但我找不到正确的解决方案(参见下面的研究)。
研究
我阅读了很多文档,但可用的标志不符合我的需求(或者我没有正确理解)。那里的其他答案告诉我要记住开始的活动(例如在数组中)并在需要时完成它们。但这对我来说似乎很脏,不知何故我不能接受这是正确的解决方案。我希望一定有更清洁的东西?!
(存储堆栈对我来说似乎是错误的。您的应用程序可能会被系统杀死,因此您的静态数据,但您的历史记录将在启动时再次加载。所以您必须保留保存的堆栈。这变得更加肮脏.. .)
更新
我的代码和我尝试过的内容(摘要):
// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);
// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);
(FLAG_ACTIVITY_CLEAR_TOP没有解决方案,请阅读文档...)
我按下Back并仍然弹出并且仍然存在C
......B
我可以通过调用来删除活动finishActivity(REQUEST_B)
。但是当B
开始另一个活动时,如果我稍后再点击,D
它仍然会弹出。不见了,但还在那里……BackC
B
D
我确定有些东西我还不明白或只是错过了。如果真的必须这样,有人可以给我一个提示或批准我的研究吗?