zoukankan      html  css  js  c++  java
  • 对iOS后台模式最多10分钟运行时间的进一步理解

    在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟。

    但这种说法有个前提:

    那就是iOS7之前,是这样

    但从iOS7开始,我们申请后,最多只有180s的处理时间(3分钟),一直颇不理解,为什么变成了3分钟。

    申请方法swift写法:

        var backgroundTaskIdentifier:UIBackgroundTaskIdentifier!



    backgroundTaskIdentifier = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({ UIApplication.sharedApplication().endBackgroundTask(self.backgroundTaskIdentifier) if self.backgroundTaskIdentifier != UIBackgroundTaskInvalid{ self.backgroundTaskIdentifier = UIBackgroundTaskInvalid } })

      

    后来看到一个说法是:

    系统主动将10分钟分为N次的分配,总的后台时间还是可以10分钟的,但我们每次申请,却只能得到180s的时间,多次以后,总的时间到达10分钟后,即使再次申请,都是无效的。

    那么多次申请怎么实现呢?

    我这边讲一个我碰到的情况:

    比如app即使一直在后台,但我这边能够不定期收到系统回调(我用到了iBeacon),每次收到回调,都能够将我的应用唤醒10s,理论情况下,这种唤醒系统只会分配给你10s的处理时间,但我又发现10s时间是不够我处理完所有事情的。

    所以我这种情况,正好可以符合这种场景,我只需要在我的回调方法里再次申请一次延长时间,就能够又得到一次最多180s的处理时间,当然如果你20s就都处理完了,时间是只算20s的。

    多次申请直至系统累计到600s的时间,系统才会停止。

    这种运用场景,就能充分用到10分钟,所以记录下仅供参考。

  • 相关阅读:
    sshd_config参数说明
    护网小结(持续更新)
    CVE-2019-2725修复(删包)
    网址收藏
    Kali 开启 SSH 服务方法
    SSL/TLS 安全测试
    时间序列(二):时序预测那些事儿
    时间序列(一):上手体验
    推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen
    评分卡系列(四):泛化误差估计和模型调参
  • 原文地址:https://www.cnblogs.com/yajunLi/p/6066602.html
Copyright © 2011-2022 走看看