繁体   English   中英

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

[英]Method OnCreate being called again when I return from another activity

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

我正在两台设备上对此进行测试,一台运行Gingerbread(GB),另一台运行Jellybean(JB)。

在GB上,当我将表格B返回A时,不会调用onCreate方法的方法,我认为这意味着未取消分配活动(也未调用onDestroy )。

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

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

这里到底发生了什么,为什么它们的行为有所不同?

该框架在需要创建您的Activity的新实例时将调用onCreate() ,这很可能在这里发生。

完全可以接受的是,在您离开它之后,销毁您的Activity( onStop() ),并在您回来时重新创建它。 无法保证何时会发生这种情况。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM