我有一个非常奇怪的情况,我从来没有在我创建的任何应用程序上看到过。
该应用程序有多个活动,而第一个用于初始化和启动屏幕。
假设应用程序具有活动“A”,“B”,“C”,......,并且最终用户从“A”(启动屏幕的第一个)变为“B”,并且然后按下主页键,通过单击启动器上的图标返回应用程序。
简而言之,情景是:
推出应用 - >活动A(飞溅) - >活动B - >压在家里 - >返回应用程序(通过启动器) - > ?
预期结果:应用程序应该返回到显示的最后一个活动,这意味着“?” =活动B
实际结果:应用程序实际返回活动“A”,意味着“?” =活动A,然后是我离开的活动(在本例中为B)
清单和代码都没有太多显示,因为它们都非常标准。
但是,有一些线索可能会说明原因:
每个活动可能需要一些记忆来显示图像,但它们并没有花费太多时间。
所有活动都从roboSherlock活动变体扩展,包括从RoboSplashActivity扩展的闪屏活动。
在第一个活动(启动画面)上,我没有让调用super.andFinishThisOne();在andFinishThisOne方法中,因为我需要初始化除了roboguice注射之外的更多东西。但是,当一切准备就绪时,我启动新活动并使用finish()关闭当前的活动。
有一个错误报告(here)描述了类似的情况。不确定如何处理它,以及可以做些什么来处理它。
到目前为止,我已经尝试了下一个解决方案:
在清单中为第一个活动(主要是launchMode)播放不同的标志和属性,但没有一个帮助了这种情况。
在启动画面活动中使用了startActvityForResult,而不调用finish()。它也没有工作并重新创建了活动。
现在,我只是添加了下一个代码来跳过第一个活动,以防它不是根活动,但这更像是一个解决方法,而不是一个真正的解决方案。
if (!isTaskRoot()) {
finish();
return;
}