3

我有两个活动: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 的预期行为吗?有没有一种优雅的方法来解决这个问题,还是我必须破解一些东西,或者我应该一起尝试不同的方法?

提前致谢。如果有人需要更多信息或代码,请告诉我。

4

1 回答 1

1

您可以声明一个类成员private boolean mShouldFinished。在调用时将其设置为true。在检查和如果为调用。onActivityResultfinishonResumemShouldFinishedfinish

于 2013-03-21T18:25:00.740 回答