Respond to CR.

pull/1/head
Matthew Chen 7 years ago
parent 2cc3752901
commit a572285ad2

@ -87,6 +87,11 @@
if (!strongSelf) { if (!strongSelf) {
return; return;
} }
// Make a local copy of completionBlock to ensure that it is called
// exactly once.
BackgroundTaskCompletionBlock _Nullable completionBlock = nil;
@synchronized(strongSelf) @synchronized(strongSelf)
{ {
if (strongSelf.backgroundTaskId == UIBackgroundTaskInvalid) { if (strongSelf.backgroundTaskId == UIBackgroundTaskInvalid) {
@ -95,10 +100,12 @@
DDLogInfo(@"%@ %@ background task expired.", strongSelf.logTag, strongSelf.label); DDLogInfo(@"%@ %@ background task expired.", strongSelf.logTag, strongSelf.label);
strongSelf.backgroundTaskId = UIBackgroundTaskInvalid; strongSelf.backgroundTaskId = UIBackgroundTaskInvalid;
if (strongSelf.completionBlock) { completionBlock = strongSelf.completionBlock;
strongSelf.completionBlock(BackgroundTaskState_Expired); strongSelf.completionBlock = nil;
strongSelf.completionBlock = nil; }
}
if (completionBlock) {
completionBlock(BackgroundTaskState_Expired);
} }
}]; }];
@ -116,9 +123,7 @@
self.completionBlock = nil; self.completionBlock = nil;
} }
if (completionBlock) { if (completionBlock) {
DispatchMainThreadSafe(^{ completionBlock(BackgroundTaskState_CouldNotStart);
completionBlock(BackgroundTaskState_CouldNotStart);
});
} }
} }
}); });
@ -136,6 +141,7 @@
{ {
backgroundTaskId = self.backgroundTaskId; backgroundTaskId = self.backgroundTaskId;
completionBlock = self.completionBlock; completionBlock = self.completionBlock;
self.completionBlock = nil;
} }
if (backgroundTaskId == UIBackgroundTaskInvalid) { if (backgroundTaskId == UIBackgroundTaskInvalid) {
@ -146,11 +152,12 @@
// endBackgroundTask must be called on the main thread. // endBackgroundTask must be called on the main thread.
DispatchMainThreadSafe(^{ DispatchMainThreadSafe(^{
DDLogVerbose(@"%@ %@ background task completed.", logTag, label); DDLogVerbose(@"%@ %@ background task completed.", logTag, label);
[CurrentAppContext() endBackgroundTask:backgroundTaskId];
if (completionBlock) { if (completionBlock) {
completionBlock(BackgroundTaskState_Success); completionBlock(BackgroundTaskState_Success);
} }
[CurrentAppContext() endBackgroundTask:backgroundTaskId];
}); });
} }

Loading…
Cancel
Save