iOS多任务时,线程在进入后台时的行为

5
在运行一些测试时,我注意到当一个没有后台特权的应用程序(例如voip,gps等)进入后台状态时,任何正在运行的后台线程或并发的NSOperations似乎会被暂停(而不是终止),并且当应用程序重新进入前台时它们继续执行。
我没有看到这种线程行为在任何地方有记录。请问是否有人知道这种行为是否被定义并且可以被信赖?
如果线程在应用程序重新打开时可以安全地继续执行,那么不必取消任务或涉及任务完成将非常有用。特别是对于复杂的操作。
任何信息都将非常感谢。谢谢!
1个回答

9

当一个非多任务应用程序被退出时,它会被冻结在当前状态并保留在内存中。但是,如果内存不足,用户从多任务栏关闭它,或者设备关闭,则该应用程序将在没有警告的情况下终止。您可以相信从后台返回的应用程序将像以前一样继续运行,但是您应该在进入后台时保存状态,以防应用程序被关闭。


1
我知道当前状态(即内存)被保留,但我不知道各个进程/线程本身是否以相同的状态被保留,而执行只是被暂停了。 - Michael Waterfall
3
当应用程序再次进入前台时,似乎应用程序及其线程的状态都得以维持和继续。唯一需要知道的是,在后台线程执行开始之前,不能保证会进行任何委托调用(例如-applicationWillEnterForeground:)。 - Michael Waterfall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接