最近我從我的客戶那裏得到要求,我們需要在後臺處理一些執行。此執行可能會持續10分鐘或20分鐘。如何在iOS中實現長時間運行的任務?
有什麼辦法可以達到這個目的嗎?我知道iOS列出了只有那些可以在後臺運行的應用程序類型&。但我檢查了&我的應用程序不適合列出所有應用程序類型。所以現在我對此感到懷疑。
任何人都有解決方案?
感謝 希亞姆
最近我從我的客戶那裏得到要求,我們需要在後臺處理一些執行。此執行可能會持續10分鐘或20分鐘。如何在iOS中實現長時間運行的任務?
有什麼辦法可以達到這個目的嗎?我知道iOS列出了只有那些可以在後臺運行的應用程序類型&。但我檢查了&我的應用程序不適合列出所有應用程序類型。所以現在我對此感到懷疑。
任何人都有解決方案?
感謝 希亞姆
使用背景取在功能可用。
後臺提取模式每10分鐘執行一次。
樣本代碼聽到:https://mobisoftinfotech.com/resources/mguide/background-fetch-ios/
從上面的教程忘記該方法beginBackgroundUploadTask。
在這裏我的背景任務是不從互聯網上下載一些內容。我的後臺任務在本地運行,並在後臺執行一些圖像處理。所以這裏這個背景獲取將不起作用。 – user3347272
後臺提取只會讓您花幾秒鐘下載一些數據。這不是運行任意長的流程。僅僅因爲你要求10分鐘並不意味着你會得到它。該系統可以並且確實會限制你的速度。 –
//試試這個:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul), ^(void) {
// Perform long running process
dispatch_async(dispatch_get_main_queue(), ^{
// Update the UI
});
});
// Continue doing other stuff
它可以幫助無限時間運行長時間運行的任務嗎? – user3347272
此代碼與應用程序處於前臺時運行後臺隊列相關。我相信這裏的問題是如何在應用程序本身處於後臺時運行進程。 –
這個[文件]看看(https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution。 html)尋找這部分「執行有限長度的任務」,我認爲這解決了你的問題。因爲你有一個不是無限的後臺任務,你可以要求更多的時間來完成任務 –
@ user3347272檢查我的答案。 –
José的鏈接是最好的解決方案。沒有完整的解決方案來滿足您的要求。您無法在後臺任意長時間運行iOS應用。即使您提出了一些棘手的解決方法,App Store也會明確禁止。無論如何,運行圖像處理10-20分鐘對於iPhone而言都是太多的電池消耗。這不適合在設備上執行。 –