我有一个名为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);
答案 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()。