尽管使用了FLAG_ACTIVITY_REORDER_TO_FRONT,仍会调用onCreate

时间:2013-03-05 12:44:08

标签: android android-intent activity-lifecycle

我有2个活动(A和B),它们有2个按钮可以切换。

  1. 一个oncreate
  2. B oncreate
  3. A oncreate
  4. A onresume
  5. 我想要做的是在将意图从B发送到A之后,不应该调用oncreate,但此时确实如此。为了克服这个问题,我发现了FLAG_ACTIVITY_REORDER_TO_FRONT(from here)并认为它只能调用onresume,但事实并非如此。

3 个答案:

答案 0 :(得分:2)

FLAG_ACTIVITY_REORDER_TO_FRONT完全按照您的认为应该做的。但是,如果您启动ActivityA,然后ActivityA启动ActivityB并自行调用finish(),那么当ActivityB启动ActivityA并且意图为FLAG_ACTIVITY_REORDER_TO_FRONT ActivityA没有{{1}}的实例可以带到前面。在这种情况下,Android将只创建一个新的。我只能认为这就是你所看到的。

答案 1 :(得分:0)

FLAG_ACTIVITY_REORDER_TO_FRONT更改活动历史记录。如果在先前访问过的活动的历史记录中找到所请求的活动(在任务中),则会清除此活动的旧历史记录。因此,在按下后退按钮时,用户将不会在任务中遇到此活动。

此标志不会影响对onCreate()的调用,如果任务中没有活动(未加载或销毁),则会调用onCreate()来创建它。

答案 2 :(得分:0)

你不能只取消onCreate。如果B是全屏活动,android可以杀死A活动,并在尝试使用FLAG_ACTIVITY_REORDER_TO_FRONT标志重新启动它时重新创建它并调用它的onCreate方法。如果当你尝试将活动A放在前面时活动A仍然存在,则不应该调用onCreate方法。

也许在你的情况下你应该尝试使用片段?