想象一下,该应用程序有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也会一直重新加载这些数据。
这里到底发生了什么,他们为什么表现不同?
答案 0 :(得分:5)
当需要创建Activity的新实例时,框架会调用onCreate()
,这可能就是这里发生的事情。
框架在你离开它(onStop()
)之后销毁你的活动是完全可以接受的,并且当你回来时重新创建它。无法确定何时会发生这种情况。
通常,直到存在内存压力时才会发生这种情况,但这会因设备而异(当然也取决于操作负载)。您可以通过在Settings -> Developer Options
中启用“不要保留活动”来强制执行此行为。
最后,您还可以使用此命令直接查看活动层次结构:adb shell dumpsys activity activities
。解码所有内容需要一些经验,但应该让您大致了解活动管理器在任何时间点对世界的看法。