返回应用程序后重新创建的第一个活动

时间:2013-02-13 15:22:24

标签: android android-activity actionbarsherlock roboguice

背景

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

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

问题

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

简而言之,情景是:

推出应用 - >活动A(飞溅) - >活动B - >压在家里 - >返回应用程序(通过启动器) - > ?

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

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

清单和代码都没有太多显示,因为它们都非常标准。

解决问题的线索

但是,有一些线索可能会说明原因:

  1. 每个活动可能需要一些记忆来显示图像,但它们并没有花费太多时间。

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

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

  4. 有一个错误报告(here)描述了类似的情况。不确定如何处理它,以及可以做些什么来处理它。

  5. 到目前为止我尝试了什么

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

    1. 在清单中为第一个活动(主要是launchMode)播放不同的标志和属性,但没有一个帮助了这种情况。

    2. 在启动画面活动中使用了startActvityForResult,而不调用finish()。它也没有工作并重新创建了活动。

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

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

0 个答案:

没有答案