Android 为什么每次启动的活动完成时都调用onCreate()?
在我的应用程序中,有一个活动a,它是一个主活动,a中也有几个片段。当你单击其中一个片段中的图像时,它将启动一个新的活动B。当你单击“上一步”按钮时,我将调用finish()完成活动并返回到活动a。但是当返回到活动a时,onCreate()又叫了一次。为什么每次都调用onCreate()?我知道,应该只调用一次,然后调用onStart() 从段到活动B如下所示:Android 为什么每次启动的活动完成时都调用onCreate()?,android,android-fragments,Android,Android Fragments,在我的应用程序中,有一个活动a,它是一个主活动,a中也有几个片段。当你单击其中一个片段中的图像时,它将启动一个新的活动B。当你单击“上一步”按钮时,我将调用finish()完成活动并返回到活动a。但是当返回到活动a时,onCreate()又叫了一次。为什么每次都调用onCreate()?我知道,应该只调用一次,然后调用onStart() 从段到活动B如下所示: Intent i = new Intent(_scontext, ProductListing.class); i.setFlags(I
Intent i = new Intent(_scontext, ProductListing.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
_scontext.startActivity(i);
getActivity().overridePendingTransition(R.anim.push_out_to_left,R.anim.push_out_to_right);
在活动B中单击“上一步”按钮时,代码段如下所示:
Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);
finish();
overridePendingTransition(R.anim.push_out_to_left,
R.anim.push_out_to_right);
代码怎么了?我遗漏了什么吗 您将再次开始此活动删除以下代码,它将正常工作
Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);
您将再次开始此活动删除以下代码,它将正常工作
Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);
如果从backPress中删除finish(),则不会创建活动,并且不需要编写意图,它将自行管理其后堆栈。如果删除finish())从您的backPress活动将不会被创建,您不需要写意图,它将自行管理它的后堆栈。因为您已经得到了@Rajitha Siriwardena的答案,但我只想澄清这里的一些要点 我知道,应该只调用一次,然后onStart()应该 被叫来 首先,上面的句子不是真的 即使您完成了
活动b
,也有可能让您的活动a
进入OnCreate
。如果你的ActivityB在前台停留很长时间,那么你的ActivityA在这种情况下当然会在后台,所以最终你的Activity在onStop
(记住不要在onPause
)中,android会说,在onStop
之后,如果你的应用程序想要到达你的Activity,那么它将进入onCreate
所以
finish()
ActivityB
会起作用,但是当你这样做时,你的ActivityA
称为onCreate
。既然你已经得到了@Rajitha Siriwardena的答案,但我只想澄清一下这里的一些要点
我知道,应该只调用一次,然后onStart()应该
被叫来
首先,上面的句子不是真的
即使您完成了活动b
,也有可能让您的活动a
进入OnCreate
。如果你的ActivityB在前台停留很长时间,那么你的ActivityA在这种情况下当然会在后台,所以最终你的Activity在onStop
(记住不要在onPause
)中,android会说,在onStop
之后,如果你的应用程序想要到达你的Activity,那么它将进入onCreate
因此
finish()。要返回上一个活动调用finish()
@Raghunandan谢谢:),无需再次启动该活动。要返回上一个活动,请调用finish()
@Raghunandan谢谢:)