答案 0 :(得分:0)
添加UIBackgroundModes
不会让您的应用继续在后台运行。
上述每种模式都可让系统知道您的应用应该在适当的时间被唤醒或启动,以响应相关事件。例如,开始播放音乐然后移动到后台的应用程序仍然需要执行时间来填充音频输出缓冲区。启用音频模式会告诉系统框架他们应该继续以适当的时间间隔对应用程序进行必要的回调。如果应用程序未选择此模式,应用程序移动到后台时,应用程序播放或录制的任何音频都会停止。
当操作系统从后台任务发送任何信号时,您必须要么正在运行任务,要么回调召唤来回应,如Apple的示例所示
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
请关注Background Execution了解详情。