【问题标题】:When an app is in background, how to determine if an app is closed by a user or by IOS应用在后台时,如何判断应用是被用户关闭还是被IOS关闭
【发布时间】:2014-07-22 18:06:55
【问题描述】:

我正在致力于国家保护。如果

,我想保留我的应用程序的状态

1..在后台时,由于内存不足被IOS杀死

如果

我不想保留状态

2..当它在后台时,它被用户杀死

3..当它在前台时,它被用户杀死

正如@matt 所说,1 和3 很容易区分:当应用程序处于前台时,如果它被用户杀死,则不会保留状态;应用程序的状态在它进入后台时被保留。

我的问题是:当一个应用程序已经在后台时,如何确定它是被IOS杀死还是被用户杀死。

【问题讨论】:

  • 用户如何直接杀死应用程序?您是指在主页上双击然后向上滑动吗?
  • @trojanfoe 是的。这不会杀死应用程序吗?
  • 是的 - 我试图理解你的意思。我怀疑除了依赖内存警告丢失或其他东西之外,这不是很可靠。
  • @satheeshwaran 谢谢!这很有帮助

标签: ios uikit-state-preservation


【解决方案1】:

您所说的决定是不可能的。如果应用由于内存不足而被杀死在前台,或者如果用户通过向上滑动应用切换器在后台立即杀死应用,则状态不能被保存;这是一个崩溃,状态被删除。如果应用程序因后台内存不足而被杀死,那么状态的保存发生在很久以前,即当应用程序进入后台时。

因此,如果您在应用程序进入后台(“被用户关闭”)时不保留状态,它将永远不会被保留。

【讨论】:

  • 感谢您的回答。因此,如果应用程序在后台,然后被用户向上滑动关闭,那么状态将被保留,对吧?
  • 仅当您在进入后台之前保存了声明。这与您在后台终止(内存不足、设备重启等)相同
  • 没有。如果用户向上滑动,系统会将其视为崩溃的一种形式,并故意删除之前保留的状态。这种想法显然是:如果用户这样做,就会出现问题,所以我们不要通过保留可能导致问题的东西来冒无限循环(启动时崩溃)的风险。
  • @matt 谢谢!!这是我想知道的。顺便说一句,我在你的网站上看到了你的书。您的书中是否包含您在回答中提到的内容?我想找一个资源来学习这种知识。
  • 它没有提到这个特别好的点,但我从马的嘴里得到了它 - 苹果在一个关于这个主题的 WWDC 视频中解释了这一点(我忘了是哪一个,抱歉)。
猜你喜欢
  • 2018-07-05
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 2011-10-28
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多