当我的上一个活动调用finish()时,为什么Android会启动新活动?

时间:2015-02-03 19:12:06

标签: android android-lifecycle activity-lifecycle

我今天遇到了一个奇怪的问题:我有3个活动:A,B和C.

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

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

如果设置了标志,我终于通过在A&#39}上调用finish()来解决这个问题,但这实际上是一场噩梦。

注意:我100%确定当我按下退出按钮时,C是唯一一个运行,感谢日志onDestroy()等。我也确定没有线程/计时器在后台运行证据是当我强行杀死B时神奇地创造了A,但之前没有创造过。

注意2:我知道退出按钮在Android上不是好事但应用程序在特殊硬件支持的自助服务终端上运行,用户无法访问主页按钮和后退箭头等,因此应用管理部分的退出按钮

编辑:

// B.java:

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

//与A.java相同,B

// C.java    exit.onClick {finish(); }

A是应用的入口点活动

1 个答案:

答案 0 :(得分:0)

确定。 显然这种行为是正常的:如果您尝试使用finish()退出,Android会唤醒活动堆栈上的上一个活动;这是因为操作系统希望您的应用程序能够承受意外情况,例如电话呼叫中断用户。

请参阅此答案:Finish all previous activities

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

那,或尝试上面答案中提到的一些方法。