【问题标题】:allow background mode, but terminate conditionally?允许后台模式,但有条件地终止?
【发布时间】:2011-11-17 21:04:40
【问题描述】:

我将“应用程序不在后台运行”设置为否

这意味着,它可以进入后台并稍后恢复。

我在“applicationDidEnterBackground”中添加了一些代码, 我想在需要时强制退出应用程序。 (当后台无事可做时。)

我不推荐阅读“退出”。
我可以发布一条可能会导致类似 applicationWillTerminate 的消息吗?

  • 编辑

让我澄清一下我为什么想要那个, 我希望我的应用在下载内容时在后台运行.. 通过 beginBackgroundTaskWithExpirationHandler
但是如果用户没有下载任何东西,我可以安全地退出应用程序。

谢谢

【问题讨论】:

  • 你为什么不想退出你的应用程序?您不能将应用程序重置到您想要的位置吗?就像如果满足条件然后在某些UINavigationController.上调用popToRootViewController

标签: iphone background terminate


【解决方案1】:

你不必担心这个。

如果您在后台有工作要做并且您设置了一个后台任务,那么它会根据需要运行并在完成后执行其处理程序。

您似乎没有意识到的是,如果您在后台无事可做,您的应用就会被暂停,实际上并没有运行。

在这种情况下,您无需做任何事情,退出应用程序不会为您带来任何您在暂停后尚未获得的东西。

【讨论】:

  • Jasarien:感谢您的回复,如果适用,我想关闭与我的服务器的连接。
  • 您可以在applicationWillEnterBackground: 方法中做到这一点。
  • Jasarien:你的意思是 applicationWillResignActive ? ..似乎没有applicationWillEnterBackground。我试过applicationWillResignActive。问题是,在我的应用程序中关闭连接操作大约需要 1-2 秒。有时,它会成功关闭,有时却没有,因为 applicaitonWillResignActive 到实际进入后台之间的时间似乎太短了。
  • 对不起,我的错,是applicationDidEnterBackground:developer.apple.com/library/ios/documentation/UIKit/Reference/…
【解决方案2】:

Apple 在 iOS 上的一般做法是,应用程序永远不应出于任何原因自行终止。

重要的是要了解,当您的应用程序在后台“运行”时,它并没有真正运行:“应用程序不在后台运行”键基本上是为了确保与为 iOS 3 及更低版本构建的应用程序向后兼容,这往往会对用户将如何进入应用程序做出某些假设。新应用不支持它的原因很少。

基本上,不要打扰:我想你可以在技术上调用 exit(),但 Apple 会因此而讨厌你,而且这对平台来说是一种糟糕的风格。

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多