2

背景

我有一个非常奇怪的情况,我从未在我创建的任何应用程序上看到过。

该应用程序有多个活动,而第一个活动用于一些初始化和启动屏幕。

问题

假设应用程序有活动“A”、“B”、“C”、...,并且最终用户从“A”(初始屏幕的第一个)转到“B”,然后按下home 键,然后通过单击启动器上的图标返回应用程序。

简而言之,场景是:

应用程序启动 -> 活动 A(启动) -> 活动 B -> 按下主页 -> 返回应用程序(通过启动器) -> ?

预期结果:应用程序应返回到显示的最后一个活动,即“?” = 活动 B

实际结果:应用程序实际上返回到活动“A”,意思是“?” = 活动 A ,然后是我离开的活动(在本例中为 B )

清单和代码中没有太多可显示的内容,因为它们都是非常标准的。

解决问题的线索

但是,有一些线索可能会说明造成这种情况的原因:

  1. 每个活动可能需要一些内存来显示图像,但它们不会占用很多。

  2. 所有活动都从 roboSherlock 活动变体扩展而来,包括从 RoboSplashActivity 扩展而来的闪屏活动。

  3. 在第一个活动(启动屏幕)上,我没有让调用 super.andFinishThisOne(); 在 andFinishThisOne 方法中,因为我需要初始化除 roboguice 注入之外的更多内容。但是,当一切准备就绪时,我开始新活动并使用 finish() 关闭当前活动。

  4. 有一个描述类似情况的错误报告(此处)。不知道有多相似,以及可以做些什么来处理它。

到目前为止我尝试过的

到目前为止,我已经尝试了下一个解决方案:

  1. 为清单中的第一个活动(主要是 launchMode )使用不同的标志和属性,但没有任何帮助。

  2. 在初始屏幕活动上使用 startActvityForResult ,而不调用 finish() 。它也没有工作并重新创建了活动。

现在,我只是添加了下一个代码来跳过第一个活动,以防它不是根活动,但这更像是一种解决方法而不是真正的解决方案。

if (!isTaskRoot()) {
    finish();
    return;
}
4

0 回答 0