一个问题是,启动器活动置于后台并通过单击启动器恢复到前台时会重新打开。仅当用户安装应用程序并从Play商店或android程序包安装程序启动该应用程序后,才会出现此问题。
以下是重现此问题的步骤:
结果是有3个活动,而不是2个。堆栈看起来像这样:
接下来,当该应用程序从最近的应用程序列表中删除并且再次执行上述步骤时,该应用程序的行为将完全符合预期。新的后堆栈看起来像这样:
我创建了示例应用程序来演示该问题: source code
此处显示了安装过程,并从android软件包安装程序首次运行: first run
用户在应用程序内部启动SecondActivity,并将应用程序置于后台。接下来,用户想要将应用程序还原到前台,结果是再次创建了FirstActivity。
在执行上述步骤之后,出现了一个后退堆栈: back stack after first run
现在,让我们以标准方式运行应用程序: normal run
在此测试之前,该应用已从最新应用的列表中删除。用户在应用程序内部启动SecondActivity,然后通过按下主屏幕按钮将其置于后台。接下来,用户将应用程序还原到前台,并且这次用户看到SecondActivity。该应用现在的行为符合预期。
这是经过上述步骤的后排电池: back stack after normal run
问题不仅仅涉及我的示例应用。可以使用Play商店中的任何应用进行验证。我在Play商店中安装的Netflix App上做了这样的测试(顺便说一句,由于安全政策,无法看到Netflix主屏幕): netflix first run
以下是步骤:
用户再次看到主屏幕,而不是帮助屏幕。后堆栈看起来像这样:
可以通过按返回按钮进行验证,然后用户将逐个看到每个屏幕。如我们所见,Netflix App与我的示例App的行为相同。
有人可以向我解释为什么会发生吗?