为什么 Android 在我最后一个 activity 调用 finish() 时开始一个新的 activity?

Why does Android start a new activity when my last activity calls finish()?

我 运行 今天遇到了一个 st运行ge 问题:我有 3 个活动:A、B 和 C。

A 开始 B 然后结束。 B开始C然后结束。 C是唯一的运行。猜猜当我在 C 上调用 finish() 时会发生什么(我有一个退出应用程序按钮)? B是自动创建的

所以我做了一些事情:在 B 的 onStart 上,如果设置了某个静态标志,B 将调用 finish 自身。发生什么了 ? A 已自动创建!

如果设置了标志,我终于通过在 A 的开始调用 finish() 来解决这个问题,但这在某种程度上是一场噩梦。

注意:当我按下退出按钮时,我 100% 确定 C 是唯一的 运行,这要感谢登录 onDestroy() 等。我也确定没有线程/ timer 运行 在后台等。证据是A是我强行杀死B时神奇创建的,但之前没有创建。

注意 2:我知道 Android 上的退出按钮不是什么好东西,但该应用程序 运行 在具有特殊硬件支持的信息亭中,用户无法访问主页按钮和后退箭头等,因此应用程序管理部分的退出按钮

编辑:

// B.java:

xxx.onClick() { startActivityForIntent(B.this, C.class); finish();}

// A.java 与 B

相同

// C.java exit.onClick { 完成(); }

A 是应用的入口点activity

好的。 显然这种行为是正常的:如果您尝试使用 finish() 退出,Android 会唤醒 activity 堆栈上的前一个 activity;这是因为 OS 希望您的应用程序能够在 phone 调用打断用户等意外情况下存活下来。

查看此答案:Finish all previous activities

尝试在他们的 xml 文件中为您的所有活动添加 android:noHistory="true"

那个,或者试试上面回答中提到的一些方法