我今天遇到了一个奇怪的问题:我有3个活动:a、B和C。
A先开始B,然后结束。B开始C,然后结束。C是唯一一个正在运行的。猜猜看,当我在C上调用finish()
(我有一个退出应用程序按钮)时会发生什么 自动创建b
所以我做了一些事情:在B的onStart
上,如果设置了某个静态标志,B就会在自己上调用finish
。发生了什么 A已自动创建
如果设置了标志,我最终也在A的开始时调用了finish()
,但这在某种程度上是一场噩梦。
注意:当我按下退出按钮时,我100%确信C是唯一一个运行的,这要归功于onDestroy()
等上的日志。我也确信后台没有线程/定时器运行。证据是,A是在我强行杀死B时神奇地创建的,但以前没有创建。
注2:我知道退出按钮在Android上不是一件好事,但该应用程序在一个特殊硬件支持的售货亭中运行,用户无法访问主页按钮和后退箭头等,因此退出按钮在应用程序的管理部分
编辑:
// B.java:
xxx.onClick() { startActivityForIntent(B.this, C.class); finish();}
//与带有B 的A.java相同
//C.javaexit.onClick{finish();}
A是应用程序的入口点活动
好的。显然,这种行为是正常的:如果你试图使用finish()退出,Android会唤醒活动堆栈上的前一个活动;这是因为操作系统希望您的应用程序能够在电话中断用户等意外情况下幸存下来。
看到这个答案:完成之前的所有活动。
尝试在它们的xml文件中为所有活动添加android:noHistory="true"
。
或者试试上面答案中提到的一些方法。