【问题标题】:iPhone sdk, Running app in background and send frequent http requestiPhone sdk,在后台运行应用程序并发送频繁的http请求
【发布时间】:2011-02-10 08:01:01
【问题描述】:

我正在尝试利用 iPhone 4 的多任务处理功能。我想在后台运行应用程序并经常发送http请求以发送/接收数据,可以吗?

【问题讨论】:

    标签: iphone http multitasking


    【解决方案1】:

    令人惊讶的是,在“多任务”iOS 4.x 中实际上很少进行时间切片。相反,实际上只是应用程序挂起/恢复。当用户点击主页按钮后应用程序被发送到后台时,它将在片刻后停止执行周期 (*)。

    (*) 有一些例外。声明自己为“VoIP 提供商”的应用程序、基于位置的应用程序和音乐应用程序可以获得后台执行周期,可能只是为了响应相应事件(例如发生“位置的显着变化”)执行那些非常具体的操作。一些应用程序显然试图扩展规则并寻找未记录或未充分记录的技术来继续获得后台执行周期。

    而且Undeadlegion提到的“请求运行时间”是有持续时间限制的。

    现实情况是,在 iOS4 上,应用程序是不允许在后台连续运行的。

    【讨论】:

    • “而且Undeadlegion提到的‘请求运行时间’是有持续时间限制的。”是的,它是有限的。但是您可以在旧许可证即将用完时(然后结束旧许可证)申请新许可证。此外,根据观察,时间限制为10分钟。对于许多 http 任务来说已经足够长了,不是吗?
    • 您仍然没有解决后台执行受限的事实。是的,你可以申请新的许可证,但这并不意味着你会得到一个。最好不要误导人们认为 iOS 中的“后台”处理就像通用操作系统一样,其中进程在不受限制的情况下相互运行时间片。
    【解决方案2】:

    @Undeadlegion 提出了一种可行的方法来实现您的目标。为了更清楚,请查看我之前对类似问题的回答,iphone - Connecting to server in background

    【讨论】:

    • OP提到他想“在后台运行应用程序并经常发送http请求......”。将他引导到应用程序可以申请有限 长度的运行时间延长的解决方案并不能直接满足他的目标。在 iOS 4“多任务”上设置没有连续、无限后台操作这样的期望更为正确。
    • @Bogatyr 在你的回答中看到我的评论。
    【解决方案3】:

    可以在您的应用程序处于后台时请求运行时间。

    Multitasking Developer's Guide

    不过,根据您的 http 请求的意图,推送通知可能是一个可行的替代方案。

    这可能是必要的,因为您不提供音频、voip 或定位服务,因此您的应用无法无限期地在后台运行。

    【讨论】:

    • 我同意。具体注意看PDF中的Listing 4-2 Starting a background task at quit tim
    • @diwup 在他之前的帖子中有一个解决方法,可以在后台获得更多的运行时间(尽管不能保证你总是能得到它)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多