使用Objective C内存管理,我们有一般规则,如果您使用以下任何技术创建对象,则需要稍后释放该对象。
这条规则很容易记住。我正在寻找一个类似的简单规则来决定应用程序休眠时是否有某些事情进行后台处理。这样的确定列表是否存在?
当应用程序睡觉时,我正在考虑其他十几件事。我很担心,因为自从我开始开发这款摄像机应用程序以来,我的电池寿命一直很糟糕(一夜之间下降了50%)。也许这是巧合,或者当应用程序正在睡觉时相机仍在录制。
答案 0 :(得分:1)
它在某种程度上取决于bundle中的UIBackgroundModes标志。您可以使用它们告诉iOS您要继续在后台运行。您还可以使用beginBackgroundTaskWithExpirationHandler动态请求足够的时间继续下载几分钟。
如果您什么都不做,默认设置是暂停您的应用 - 在您返回前台之前,NSTimers不会触发。如果你在主线程上循环,你的应用程序将有一点时间来完成它,但没有指定确切的时间量。如果主线程上的循环花费的时间太长,即使您在前台,您的应用也将被终止。
我不是100%确定NSURLConnections会发生什么,但我怀疑它们默认被取消了。
请参阅:
iPhoneOS Programming Guide (PDF), p. 65
至于你的电池问题,你的应用程序绝对可以对此负责。例如,GPS是臭名昭着的电池,特别是如果您继续在后台运行以播放音频或进行其他处理。