Guard backgroundTimeRemaining on main thread (#4411)

This commit is contained in:
Bruno Pantaleão Gonçalves
2026-03-04 18:16:02 +01:00
committed by GitHub
parent d04caed4f9
commit 66d227381e

View File

@@ -21,7 +21,19 @@ private extension UIApplication {
withName: name,
beginBackgroundTask: { name, expirationHandler in
let identifier = beginBackgroundTask(withName: name, expirationHandler: expirationHandler)
let remaining = backgroundTimeRemaining < 100 ? backgroundTimeRemaining : nil
let remaining: TimeInterval? = {
if Thread.isMainThread {
let timeRemaining = self.backgroundTimeRemaining
return timeRemaining < 100 ? timeRemaining : nil
} else {
var result: TimeInterval?
DispatchQueue.main.sync {
let timeRemaining = self.backgroundTimeRemaining
result = timeRemaining < 100 ? timeRemaining : nil
}
return result
}
}()
return (identifier == .invalid ? nil : identifier, remaining)
}, endBackgroundTask: { identifier in
self.endBackgroundTask(identifier)