Веб-представление iOS застревает, когда приложение переходит в фоновый режим и выходит на передний план
У нас есть веб-представление, в котором размещен лист веб-действий с таймером. Всякий раз, когда происходит переход к другому приложению и обратно к нашему приложению, таймер зависает, и лист веб-действий перестает отвечать на запросы.
Любые решения или обходной путь для решения этой проблемы?
1 ответ
Используйте следующую функцию, чтобы создать таймер, который продолжает работать, когда приложение находится в фоновом режиме:
func executeAfterDelay(delay: TimeInterval, completion: @escaping(()->Void)){
backgroundTaskId = UIApplication.shared.beginBackgroundTask(
withName: "BackgroundSound",
expirationHandler: {[weak self] in
if let taskId = self?.backgroundTaskId{
UIApplication.shared.endBackgroundTask(taskId)
}
})
let startTime = Date()
DispatchQueue.global(qos: .background).async {
while Date().timeIntervalSince(startTime) < delay{
Thread.sleep(forTimeInterval: 0.01)
}
DispatchQueue.main.async {[weak self] in
completion()
if let taskId = self?.backgroundTaskId{
UIApplication.shared.endBackgroundTask(taskId)
}
}
}
}