我没有找到解决方案的活动堆栈有一个烦人的问题。
基本上我有一个作为“启动器”活动的活动(我的清单中的主要活动,这是从启动器等开始的)。它是半透明的,使用以下设置:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
它所做的是检查提供给它的 Intent。如果 Intent 数据为空,它会启动一个新的 Activity,它是应用程序的主要 Activity。
如果意图数据包含某些命令,则启动器活动应该执行某些任务然后退出,甚至不启动主活动。所以这应该在没有任何 UI 的情况下发生(完成时弹出消息除外)。
我的问题是,如果主活动已经启动,如果用户使用主页按钮离开它,下次使用命令启动启动活动时,主活动也会短暂显示。
我假设这是因为活动堆栈,因为在这种情况下我没有从启动活动重新启动主要活动。
我尝试了各种解决方案均无济于事。我不能在 onPause 或 onStop 的主要活动中使用 finish() ,因为如果用户例如进入设置活动并且这是不想要的行为,它也会退出活动。我还尝试了重新启动启动器活动的变体
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
但这似乎也不起作用。
奇怪的是,当这种不需要的行为发生时,不会在主要活动上调用 onCreate/onResume/onStart。仍然显示!我猜这是因为它是堆叠的,并且由于启动活动是半透明的,因此主要活动是通过它显示的。