【问题标题】:onCreate not being called in debug build?onCreate 在调试版本中没有被调用?
【发布时间】:2017-10-25 18:01:57
【问题描述】:

我发现我的应用程序在调试版本和发布版本之间的行为不同:

在调试中,当按下主页按钮后重新打开应用程序时,会调用 onResume。 (不调用 onCreate)。

在生产(发布版本)中,当按下主页按钮时,首先重新打开应用调用 onCreate。

差异引入了一个错误,因为我在 onCreate 中设置了一个标志。问题:哪一个是正确的行为?我能否让发布版本与调试版本一样工作(按下主页按钮后重新打开应用程序时不会调用 onCreate)?

【问题讨论】:

  • 请原谅我糟糕的英语——(你的意思是你不明白我的问题,或者调试或发布构建行为没有意义?
  • 销毁活动(需要调用 onCreate)的行为取决于操作系统而不是应用程序
  • 如果有帮助,您还可以覆盖 onDestroy 和 onRestart
  • 谢谢马科斯!。请您详细说明覆盖 onDestroy() 或 onRestart() 吗?

标签: android oncreate onresume


【解决方案1】:

在调试中,当按下home键后重新打开应用时,onResume 叫做。 (不调用 onCreate)。

  • 这是完全正确的行为!

设置 -> 开发人员选项 -> 应用程序部分。 “不保留活动” - 默认为关闭。

我怀疑“按下主页按钮后重新打开应用程序时”您的活动仅在后台,通常不应被销毁,因此不应调用 onCreate。所以调试模式按预期工作。

在释放模式下,你有一些东西会杀死你的活动,他什么时候在后台。可以是代码的一部分,可以是缺少翻译或某处未处理的异常,您应该得到 ANR 或“应用程序意外退出”

我建议在文件中尝试一些日志,或者检查在发布模式下会发生什么。

可以是另一个应用程序 - 甚至来自 Android 操作系统 - 它检测到您的应用程序进入后台,因此它将杀死它以腾出更多内存空间,但他不会杀死调试应用程序..

【讨论】:

  • 谢谢!我觉得这是我寻找建议操作系统在后台终止应用程序的罪魁祸首的正确方向:我在按下主页键时登录 onDestroy(),它没有被调用,但是 onCreate() 被调用当重新打开它。肯定刚学了一件事,业务规则是靠这个事件来实现的,不好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多