方法当我从另一个活动返回时再次调用OnCreate

时间:2014-04-11 19:23:57

标签: android android-activity

想象一下,该应用程序有2个活动,A和B.从A开始,按下一个启动B的按钮。 从B,您按下另一个运行setResult(RESULT_CANCEL, new Intent()); finish();的按钮 这样,视图就会弹回A。

我在两个设备上测试它,一个运行Gingerbread(GB),另一个运行Jellybean(JB)。

在GB上,当我将表单B返回给A时,方法onCreate的方法未被调用,我认为这意味着该活动尚未被释放(onDestroy也未被调用)。< / p>

然而在JB上,方法onCreate 再次被调用,我不明白为什么。

最大的问题是,在我的应用中,onCreate用于从互联网加载数据。这样,即使已经下载了数据,JB也会一直重新加载这些数据。

这里到底发生了什么,他们为什么表现不同?

1 个答案:

答案 0 :(得分:5)

当需要创建Activity的新实例时,框架会调用onCreate(),这可能就是这里发生的事情。

框架在你离开它(onStop())之后销毁你的活动是完全可以接受的,并且当你回来时重新创建它。无法确定何时会发生这种情况。

通常,直到存在内存压力时才会发生这种情况,但这会因设备而异(当然也取决于操作负载)。您可以通过在Settings -> Developer Options中启用“不要保留活动”来强制执行此行为。

最后,您还可以使用此命令直接查看活动层次结构:adb shell dumpsys activity activities。解码所有内容需要一些经验,但应该让您大致了解活动管理器在任何时间点对世界的看法。