Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 返回应用程序后重新创建的第一个活动 背景_Android_Android Activity_Actionbarsherlock_Roboguice - Fatal编程技术网

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

Android 返回应用程序后重新创建的第一个活动 背景,android,android-activity,actionbarsherlock,roboguice,Android,Android Activity,Actionbarsherlock,Roboguice,我有一个非常奇怪的情况,我从来没有在我创建的任何应用程序上看到过 该应用程序有多个活动,而第一个活动用于某些初始化和启动屏幕 问题 假设应用程序具有活动“A”、“B”、“C”、,最终用户从“A”(启动屏幕的第一个)转到“B”,然后按home键,通过单击启动器上的图标返回应用程序 简言之,情况是: 应用程序启动->活动A(启动)->活动B->按下主页->返回应用程序(通过启动程序)-> 预期结果:应用程序应返回到显示的最后一个活动,这意味着“?”=活动B 实际结果:应用程序实际返回到活动“A”,意

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

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

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

简言之,情况是:

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

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

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

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

解决问题的线索 然而,有一些线索可能会说明这一原因:

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

  • 所有活动都从roboSherlock活动变体扩展而来,包括从RobossplashActivity扩展而来的启动屏幕活动

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

  • 有一个bug报告()描述了类似的场景。不知道有多相似,以及如何处理它

  • 到目前为止我都试过了 到目前为止,我已经尝试了以下解决方案:

  • 在清单中为第一个活动(主要是启动模式)使用不同的标志和属性,但没有任何帮助

  • 在启动屏幕活动上使用startActvityForResult,而不调用finish()。它也不起作用,重新创建了活动

  • 现在,我只添加了下一个代码,以跳过第一个活动(如果它不是根活动),但这更像是一种变通方法,而不是真正的解决方案

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

    我不知道你为什么会有这样的问题,但这可能与我从未使用过的RoboSplashActivity有关,所以我不知道。不过,我的一条评论是,在使用一个活动初始化后续活动所依赖的状态数据时一定要小心,因为完全有可能(而且非常频繁)恢复活动堆栈,但所有内存和状态都会被删除,包括应用程序类和其他单例/静态数据。我知道,启动屏幕活动是此问题的主要嫌疑。然而,他们怎么能在安卓系统本身上实施一种特殊(而且奇怪)的行为呢?我的意思是,他们将如何使其工作,使此活动不断被重新创建为第一个活动?对我来说似乎很奇怪,尤其是当回到这个活动时,所有的东西都已经初始化了。如果启动程序启动了,那么当你按下它时就会创建一个。不管你之前把应用程序放在哪里……那么,它怎么会在启动屏幕后回到我之前的活动状态呢?此外,我认为这与你如何设置你的应用程序有关。例如,试用facebook应用程序,进入设置屏幕。然后按HOME并通过启动器返回应用程序。@WarrenFaith,你错了,你可以自己检查。创建一个包含2个活动的全新应用程序,每个活动在onCreate方法上显示不同的toast,而第一个活动在显示toast后立即启动第二个活动。然后按HOME,然后单击启动程序中应用程序的图标。