我有一个后台任务streamer
在 30 分钟后停止,如下所示:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while ([[NSDate date] timeIntervalSinceDate:[[NSUserDefaults standardUserDefaults]objectForKey:@"date"]]<30) {
NSLog(@"<30");
[NSThread sleepForTimeInterval:1];
}
NSLog(@"Stop");
[main stopStreaming];
});
}
但问题是当用户进入后台时再次调用 bgTask,这意味着如果用户进入后台 10 次他将有 10 个后台UIBackgroundTaskIdentifier
这会导致流媒体播放不佳,并且NSLog(@"<30");
在同一秒内被多次调用。
请指教。