【问题标题】:How to get applicationWillTerminate Notification for an iOS App that has Backgrounding Enabled?如何为启用了后台的 iOS 应用程序获取 applicationWillTerminate 通知?
【发布时间】:2013-01-02 21:52:30
【问题描述】:

所以我知道,如果您的应用支持后台执行,则不会调用 applicationWillTerminate:(除非存在一些内存问题),而是调用 applicationDidEnterBackground:

在 appDelegate 的 applicationDidEnterBackground: 方法内部,它说

// If your application supports background execution, 
//this method is called instead of applicationWillTerminate: when the user quits.

但是,当用户实际退出应用程序时,我需要将一些条目保存到字典中。我不想每次应用程序进入后台时都这样做。即使我的应用支持后台,有没有办法获得终止通知?

特别是如果应用程序被用户强制退出,有什么解决方法可以得到通知?

【问题讨论】:

  • 用户永远不会退出支持后台执行的应用程序。该应用程序只需进入后台。该应用程序可能会在操作系统的后台被杀死,但这不是用户操作。为什么每次应用进入后台时都不想保存数据?这是你唯一的选择。
  • 这是一个与外部蓝牙设备交互的应用程序。如果用户强制杀死该应用程序,我的印象是它不再在后台。不是这样吗?
  • 这是真的。如果用户强制终止应用程序,那么您的应用程序不会收到任何有关它被终止的通知。
  • @maddy 编辑:纳米,你回答了我的问题。我强调的是强制退出问题
  • @rmaddy 我不确定这是否正确,至少现在不再正确。我使用后台位置,让它们在后台运行良好(在控制台中查看)...然后我使用应用程序切换器将其杀死...我仍然收到 applicationWillTerminate: 通知。

标签: iphone ios ipad ios6 appdelegate


【解决方案1】:

每次应用进入后台时保存。操作系统可能会在没有任何进一步警告的情况下杀死你。

【讨论】:

  • 这是我的情况:应用程序连接到外部蓝牙设备。如果应用程序被终止,蓝牙连接将被终止,当应用程序恢复时,我需要将此事实保存为 ui 内容。但是,如果应用程序只是后台运行,蓝牙连接仍然存在,我不需要保存任何内容。您对如何解决这个问题有任何想法吗?
  • 当应用程序恢复时,您看不到它是否仍然启动?例如类似 if(connection.isValid) ... else ...
  • 在您恢复应用程序后需要几秒钟才能重新连接。所以基本上我需要将 UI 更新为这个事实,但我不想在 UI 进入后台时更新它(仅在它终止时)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多