如果有意图导航,则始终调用onCreate

时间:2012-07-05 15:05:54

标签: android back-stack activity-stack

我有一个名为HomeActivity的活动,它具有SurfaceView并显示相机预览图片。如果您正在启动/重新启动它,此活动会很安静并且感觉很慢。

所以我做了一些调查并发现,不知何故总是调用onCreate方法。在我看来,如果活动已经开始,这不应该发生?

documentation说: 在第一次创建活动时调用。这是您应该执行所有常规静态设置的地方:创建视图,将数据绑定到列表等。此方法还为您提供包含活动先前冻结状态的Bundle(如果有)。 始终紧跟onStart()。

以下是处理返回的方法:

protected void gotoHome() {
    final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
}

编辑:

以下是我离开HomeActivity的方式......没什么特别的:

final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class);
startActivity(i);

1 个答案:

答案 0 :(得分:15)

是的,当您想要返回HomeActivity时,您需要使用以下标志:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);

以下是Intent.FLAG_ACTIVITY_CLEAR_TOP文档中的相关部分:

  

上例中活动B的当前运行实例将会   要么接收你从这里开始的新意图   onNewIntent()方法,或者自己完成并重新使用new   意图。如果它已宣布其启动模式为“多个”(   默认情况下,您没有设置FLAG_ACTIVITY_SINGLE_TOP   意图,然后它将完成并重新创建;所有其他发射   模式或如果设置了FLAG_ACTIVITY_SINGLE_TOP,那么此Intent将是   传递给当前实例的onNewIntent()。