为什么每次启动活动完成时调用onCreate()?

时间:2014-05-27 06:11:45

标签: android android-fragments

在我的应用程序中,有一个活动A,它是一个主要的活动,在A中也有几个片段。当你单击其中一个片段中的图像时,它将启动一个新的活动B.当你单击后退按钮,我将调用finish()完成活动并返回活动A.但是当返回活动A时,再次调用A的onCreate()。为什么每次调用onCreate()?我知道,应该只调用一次,然后调用onStart()。

从细分到活动B如下:

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);

代码有什么问题?我错过了什么吗?

3 个答案:

答案 0 :(得分:2)

您正在重新开始活动。 删除以下代码,它将起作用。

Intent _gobck = new Intent(_ctx,ProductDisplay.class);
startActivity(_gobck);

答案 1 :(得分:2)

既然你已经得到了@Rajitha Siriwardena的答案,但我只是想澄清一些要点,

  

据我所知,应该只调用一次,然后onStart()应该   被称为。

上述句子首先不是真的。

即使您完成了ActivityA,您OnCreate也有可能进入ActivityB。如果您的ActivityB长时间保持在前台,当然您的ActivityA将在后台处于后台,因此最终您的onStop中的活动(请记住不在onPause中)和android {{3}如果您的应用想要访问您的活动,那么在onStop之后,它会进入onCreate

所以finish() ActivityB会有效,但是当您这样做时,ActivityA无法保证onCreate被称为{{1}}。

答案 2 :(得分:1)

如果从backPress中删除finish(),则不会创建Activity,也不需要编写Intent,它将自行管理它的后备栈。