我正在运行UIBackgroundTaskIdentifier
下的某个任务,因为我想在后台运行它。我的代码看起来像这样。调用UIBackgroundTaskIdentifier中的主队列
-(void) function
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
UIBackgroundTaskIdentifier BGIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{}];
// some processing
dispatch_async(dispatch_get_main_queue(), ^{
// some UI stuff
});
// some processing again
dispatch_async(dispatch_get_main_queue(), ^{
// some UI stuff again
});
[[UIApplication sharedApplication] endBackgroundTask:BGIdentifier];
});
}
所以我有两个问题。
- 如果我的应用程序在后台进行某些处理时发生dispatch_async调用主队列会发生什么情况?
- 这是一个很好的设计?
感谢Rob指出了这一点。我编辑了这个问题。 – shshnk