我今天遇到了一个奇怪的问题:我有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是应用的入口点活动
答案 0 :(得分:0)
确定。 显然这种行为是正常的:如果您尝试使用finish()退出,Android会唤醒活动堆栈上的上一个活动;这是因为操作系统希望您的应用程序能够承受意外情况,例如电话呼叫中断用户。
请参阅此答案:Finish all previous activities。
尝试在xml文件中为所有活动添加android:noHistory="true"
。
那,或尝试上面答案中提到的一些方法。