2017-06-12 50 views
0

我在我的應用程序中實現了後臺獲取功能。Swift - 背景獲取和延遲

背景獲取調用的函數包含延遲函數。

不過這個功能似乎並不觸發:

let when = DispatchTime.now() + 2 
DispatchQueue.main.asyncAfter(deadline: when) { 
    MyFunction() 
} 

它似乎,但是隻要我醒來的應用程序觸發。

爲什麼這不會觸發背景獲取?

+0

如果這被認爲是爲*的東西,等待*已完成的延遲,不這樣做。 – vadian

+0

預期結果是什麼?等待(延遲),然後執行'MyFunction()'或相反? –

+0

噢,是的,我應該提到,我知道這是一個糟糕的做法,但仍然這是足夠好的,在我的情況下:) – lapin

回答

1

試試這個代碼:

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() 
    } 
+0

這不起作用對不起:( – lapin

0

我不認爲你可以在主隊列後臺運行。試試這個(改變mainglobal()):

let when = DispatchTime.now() + 2 
DispatchQueue.global().asyncAfter(deadline: when) { 
    MyFunction() 
}