为什么 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"
。
那个,或者试试上面回答中提到的一些方法
我 运行 今天遇到了一个 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"
。
那个,或者试试上面回答中提到的一些方法