【问题标题】:call method when program exits - onDestroy not reliable程序退出时调用方法 - onDestroy 不可靠
【发布时间】:2011-01-07 21:35:22
【问题描述】:

我想在程序通过点击后退按钮退出时执行一些功能。 这现在由 onDestroy() 完成,它适用于除一种情况之外的所有情况。在某些情况下退出程序时从另一个活动返回时,不会调用 onDestroy。

我知道理论上 onDestroy 应该只在 Android 由于内存不足而关闭应用程序时调用,但对我来说,onDestroy 始终有效,并且只有在非常特殊的情况下才有效。

使用 onPause 或 onStop 不起作用,因为我只想在程序退出时调用该函数,而不是在调用另一个活动时。

那么最后一种方法是捕捉后退按钮单击并在那里调用函数吗?还是有其他解决办法?

【问题讨论】:

  • 退出时你想做什么?此外,您说“但对我来说,onDestroy 总是有效……”请注意不要根据您的轶事经验做出假设。确保您了解生命周期提供的保证,并且只假设这些保证是真实的。

标签: android activity-lifecycle ondestroy


【解决方案1】:

战术上,使用onBackPressed()

从战略上重新考虑您的架构。编写良好的活动不应该关心是否调用了onDestroy(),因为它保证不会总是被调用。例如,Android 可以随时终止您的进程(例如,内存极低的情况)。您需要onDestroy() 才能可靠地工作这一事实表明存在应该解决的问题。

【讨论】:

  • 这不是覆盖后退按钮吗?我想我在某个地方读到了开发人员应该避免这样做的地方。
  • @semajhan:好吧,如果你链接到超类,它仍然会做正常的 BACK 行为。但是,是的,一般来说,开发人员应该避免这样做。
猜你喜欢
  • 2023-03-23
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 2013-08-20
  • 2013-08-28
  • 1970-01-01
相关资源
最近更新 更多