低内存清理后的Android onActivityResult和onResume Lifecycle

时间:2013-03-21 15:20:11

标签: android android-activity android-memory

我有两个活动:ActivityA和ActivityB。 ActivityA为结果启动Activity B,并期望某个resultCode。如果它没有得到它,ActivityA完成。这个想法是关闭了应用程序。

ActivityA还有一个onResume方法可以完成一些工作。如果ActivityA决定在onActivityResult方法中完成,我不希望这样做。

这在大多数情况下都有效,除了在内存不足的情况下,android会从内存中删除ActivityA和ActivityB并重新加载它们。

例如:ActivityA启动ActivityB。背景应用程序。然后android做任何内存清理。我们可以在DDMS中模拟它。

  • 将应用程序带到前台。
  • onCreate()调用ActivityB
  • 后退按钮以完成ActivityB
  • onCreate()调用ActivityA
  • onActivityResult()调用ActivityA
  • 结果是取消,呼叫结束()
  • onResume()调用ActivityA
  • 简历上的内容

最后两个步骤是不可取的。没有低内存问题,正常的工作流程如下所示:

  • 将应用程序带到前台
  • 后退按钮以完成ActivityB
  • onActivityResult()调用ActivityA
  • 结果是取消,呼叫结束()

我在运行Gingerbread的手机和运行Jellybean的Nexus 7上看到了这一点。

我的第一个问题:我在活动生命周期中遗漏了哪些东西?

如果失败,这是Android的预期行为吗?有没有一种优雅的方法来解决这个问题,或者我是否需要破解某些东西,或者我应该一起尝试不同的方法?

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

1 个答案:

答案 0 :(得分:1)

您可以声明班级成员private boolean mShouldFinished。调用onActivityResult时,将其设置为finish中的 true 。在onResume检查mShouldFinished,如果 true ,请致电finish