我有两个活动:ActivityA 和 ActivityB。ActivityA 为结果启动 Activity B,并期望某个 resultCode。如果它没有得到它,则 ActivityA 完成。这个想法是关闭应用程序。
ActivityA 还有一个 onResume 方法可以做一些事情。如果 ActivityA 决定在 onActivityResult 方法中完成,我不希望完成这些事情。
这在大多数情况下都有效,除非在内存不足的情况下,android 从内存中删除 ActivityA 和 ActivityB 并重新加载它们。
例如:ActivityA 启动 ActivityB。背景应用程序。然后android会做它的内存清理。我们可以在 DDMS 中进行模拟。
- 将应用程序带到前台。
- 为 ActivityB 调用 onCreate()
- 后退按钮完成 ActivityB
- 为 ActivityA 调用 onCreate()
- onActivityResult() 调用 ActivityA
- 结果是取消,调用finish()
- onResume() 调用 ActivityA
- 在简历上做事
这最后两个步骤是不可取的。如果没有内存不足的问题,正常的工作流程如下所示:
- 将应用程序带到前台
- 后退按钮完成 ActivityB
- onActivityResult() 调用 ActivityA
- 结果是取消,调用finish()
我在运行 Gingerbread 的手机和运行 Jellybean 的 Nexus 7 上都看到了这一点。
我的第一个问题:我是否在活动生命周期中遗漏了一些明显的东西?
如果做不到这一点,这是 Android 的预期行为吗?有没有一种优雅的方法来解决这个问题,还是我必须破解一些东西,或者我应该一起尝试不同的方法?
提前致谢。如果有人需要更多信息或代码,请告诉我。