破坏关于恢复活动的观点

时间:2013-08-26 02:52:32

标签: android android-activity

我有一个MainActivity类,它会在某个时刻启动RaceActivity。如果稍后RaceActivity退出,我希望MainActivity返回其所有视图。但是,它似乎每次都重新创建。我已经实现了onOptionsItemSelected的正确部分,但是当我单击后退按钮时,我每次都会获得一个新实例,或者至少以编程方式添加的视图已经消失。我该怎么做才能解决这个问题?

编辑以澄清:

我可以使用onCreate和bundle来恢复这些视图,但我认为如果你重新创建一个对象的同一个实例就会自动发生。我想在重新创建活动时保持以编程方式创建的视图。或者,我希望活动在用户返回时停止销毁。 (我测试了,一旦使用返回就会被破坏。)

2 个答案:

答案 0 :(得分:0)

如果有帮助,请接受我的回答。找到解决方案需要几个小时..

覆盖onBackPressed()

Intent intent = new Intent(FromAnyActivity.this, CurrentActivity.class);

            intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

            startActivity(intent);

并在其中插入代码..它将从堆栈重新排序您的Activity,您的视图和数据将保持原样。通过添加SingleInstance launch模式还有另一种方法..阅读这些link可能有所帮助..

答案 1 :(得分:-2)

将以下内容添加到AndroidManifest文件中的MainActivity声明:

android:launchMode="singleTask"

根据Android API,此添加用于:“系统在新任务的根目录创建活动并将意图路由到该任务。但是,如果活动的实例已存在,则系统路由意图通过调用onNewIntent()方法到现有实例,而不是创建一个新实例。“

如果上述方法不起作用,我相信您也可以尝试将其添加到AndroidManifest文件中的MainActivity中:

android:alwaysRetainTaskState="true"

根据Android API,此添加用于:“活动所在的任务的状态是否始终由系统维护 - 如果是,则为”true“,如果是,则为”false“在某些情况下,系统允许将任务重置为初始状态。默认值为“false”。该属性仅对任务的根活动有意义;对于所有其他活动,它都被忽略。“