gpt4 book ai didi

ios - 当您的应用程序休眠时,您如何知道任务是否在后台执行?

转载 作者:行者123 更新时间:2023-11-29 04:57:12 24 4
gpt4 key购买 nike

对于 Objective C 内存管理,我们有一个一般规则:如果您使用以下任何技术创建对象,则需要稍后释放该对象。

  • 分配
  • 复制
  • 可变复制

这条规则很容易记住。我正在寻找一个类似的简单规则来决定应用程序 sleep 时是否进行后台处理。是否存在这样一个明确的列表?

  • NSUrlRequest - 如果您发送请求然后立即点击主页按钮,我的应用程序是否仍然可以处理服务器响应?
  • Timer - 您设置了一个计时器,从现在起 1 分钟后触发,但您在 1 分钟过去之前按下了主页按钮。计时器是否仍在运行、是否暂停或被取消?
  • For 循环 - 您编写一个执行一百万次迭代的 for 循环。您在完成 600,000 次迭代后关闭应用程序。当应用休眠以及重新打开应用时,剩余的 400,000 次迭代会发生什么?
  • 等等...

每当应用程序休眠时,我都会考虑很多其他事情。我很担心,因为自从我开始开发这个摄像机应用程序以来,我的电池生命周期一直很糟糕(一夜之间下降了 50%)。也许这是一个巧合,或者也许在应用程序休眠时相机仍在录制。

最佳答案

这在某种程度上取决于您的包中的 UIBackgroundModes 标志。您可以使用它们告诉 iOS 您想要继续在后台运行。您还可以使用 beginBackgroundTaskWithExpirationHandler 动态请求足够的时间来继续下载几分钟。

如果您什么都不做,默认情况下会挂起您的应用程序——NSTimers 在您返回前台之前不会触发。如果您处于主线程的循环中,您的应用程序将获得一点时间来完成它,但未指定确切的时间量。如果主线程上的循环时间过长,即使您位于前台,您的应用程序也会被终止。

我不是 100% 确定 NSURLConnections 会发生什么,但我怀疑它们默认被取消。

参见:

iPhoneOS Programming Guide (PDF), p. 65

至于你的电池问题,你的应用程序肯定是造成这个问题的原因。例如,GPS 是臭名昭著的电池消耗大户,尤其是当您继续在后台运行以播放音频或进行其他处理时。

关于ios - 当您的应用程序休眠时,您如何知道任务是否在后台执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com