8

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

因此,我进行了一些调查并发现,总是以某种方式调用 onCreate 方法。在我看来,如果活动已经开始,这不应该发生?

文档说:首次创建活动时调用。这是您应该进行所有常规静态设置的地方:创建视图、将数据绑定到列表等。此方法还为您提供了一个包含活动先前冻结状态的 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);
4

1 回答 1

15

是的,当你想返回 HomeActivity 时,你需要使用这些标志:

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

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

上面示例中当前运行的活动 B 实例将在其 onNewIntent() 方法中接收您在此处启动的新意图,或者自身完成并使用新意图重新启动。如果它已声明其启动模式为“多重”(默认)并且您没有在同一意图中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。

于 2012-07-05T15:28:31.787 回答