我在我的應用程序中實現了後臺獲取功能。Swift - 背景獲取和延遲
背景獲取調用的函數包含延遲函數。
不過這個功能似乎並不觸發:
let when = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: when) {
MyFunction()
}
它似乎,但是隻要我醒來的應用程序觸發。
爲什麼這不會觸發背景獲取?
我在我的應用程序中實現了後臺獲取功能。Swift - 背景獲取和延遲
背景獲取調用的函數包含延遲函數。
不過這個功能似乎並不觸發:
let when = DispatchTime.now() + 2
DispatchQueue.main.asyncAfter(deadline: when) {
MyFunction()
}
它似乎,但是隻要我醒來的應用程序觸發。
爲什麼這不會觸發背景獲取?
試試這個代碼:
DispatchQueue.global().async {
let timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(self.MyFunction), userInfo: nil, repeats: false)
RunLoop.current.add(timer, forMode: .defaultRunLoopMode)
RunLoop.current.run()
}
這不起作用對不起:( – lapin
我不認爲你可以在主隊列後臺運行。試試這個(改變main
到global()
):
let when = DispatchTime.now() + 2
DispatchQueue.global().asyncAfter(deadline: when) {
MyFunction()
}
如果這被認爲是爲*的東西,等待*已完成的延遲,不這樣做。 – vadian
預期結果是什麼?等待(延遲),然後執行'MyFunction()'或相反? –
噢,是的,我應該提到,我知道這是一個糟糕的做法,但仍然這是足夠好的,在我的情況下:) – lapin