【问题标题】:Avoiding Call to OnCreate of background activity by pressing back of finish from Foreground Activity通过从前台活动按完成来避免调用后台活动的 OnCreate
【发布时间】:2013-06-03 12:16:06
【问题描述】:

我有两个活动 A 和 B。

我通过按下按钮从 A 调用 B 活动。但是当我从 B 活动按下返回按钮或调用完成时,它会调用活动 A 的 onCreate。我不知道它为什么会发生。这两项活动都有数据。活动 A 正在同时执行 3 个异步任务线程。我认为由于内存较少,它正在破坏后台活动。但是如何避免呢。

我希望 A 的 onCreate 不应该在按下或从 Activity B 完成时调用。

【问题讨论】:

  • 你是如何创建活动 B 的?您是否使用带有特殊标志的意图?如果您在与活动 A 相同的任务中打开活动 B,则活动 A might be destroyed。无论如何,您应该发布一些代码。
  • 你能放一些代码来调用你使用的 b 活动吗??
  • @verybadalloc 请参阅上述链接中的问题
  • @Stackoverflow 查看上面链接上的代码

标签: android oncreate onresume activity-lifecycle


【解决方案1】:

如果 Activity A 因内存而关闭,并且在您返回时再次调用 onCreate,则 onCreate 中的 savedInstanceState 不会为空。您可以简单地检查savedInstanceState == null 并相应地执行。

例子:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState == null) {
        // Do stuff
    }     
}

【讨论】:

  • 您是否更改了您活动的manifest.xml 中的launchMode
  • 这就是我要问的。这个属性的值是多少?有吗?
  • 不,它不存在。但是放在那里呢?
  • 没什么,我只是在检查。您在上面发布的代码不包含 SetupViews(),我假设您在其中设置了按下按钮以调用 Activity B。如果没有更多信息,很难说出发生了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
相关资源
最近更新 更多