我有一個應用程序通過BLE與自定義硬件進行通信。在正常情況下,我希望我的應用程序在用戶按下主頁按鈕時快速終止。但是,當我的應用程序正在更新我的自定義硬件上的固件時,我想阻止iOS終止該應用程序。該固件操作從開始到結束大約需要五分鐘。我知道沒有辦法阻止iOS絕對終止應用程序,但是我可以做任何事情來阻止它在執行固件更新操作時終止我的應用程序嗎?如何阻止iOS在執行關鍵操作時終止應用程序?
1
A
回答
3
如果您需要3分鐘或更少時間,則可以在更新時使用beginBackgroundTaskWithName:expirationHandler:,以便應用程序將請求時間繼續在後臺運行,以便即使用戶點擊主頁按鈕以完成任務。問題是它只給你3分鐘,不會超過那個。
鑑於3分鐘顯然不足以讓您完成上傳,如果您沿着這條路走下去,我會建議將這個結合起來,在屏幕上顯示一些非常嚴肅的信息,告訴用戶不要離開應用程序。當應用程序即將進入後臺時(applicationDidEnterBackground
),您也可以安排本地通知,以提醒用戶返回到應用程序,否則將面臨嚴重後果。
更好的是,您可以將應用程序聲明爲需要適當背景模式的應用程序。例如,有可能適用的專用背景模式bluetooth-central
或bluetooth-peripheral
。然後三分鐘限制不適用。請參閱適用於iOS的應用程序編程指南中的Declaring Your App’s Supported Background Tasks。
相關問題
- 1. 如何在關閉啓動表單時阻止應用程序終止?
- 2. Python的線程 - 阻塞操作 - 終止執行
- 3. 始終在零時間阻止執行
- 4. 應用程序執行終止
- 5. 在設計iOS應用程序時,如何阻止用戶使用其他應用程序,可以在操作系統級別執行操作嗎?
- 6. 阻止程序終止,而無限期執行塊嗎?
- 7. 從sp中執行讀操作時阻止一行sp執行
- 8. 阻止程序終止的線程
- 9. 如何在應用程序關閉時終止WatchService?
- 10. 如何禁止在寫入文件時終止應用程序
- 11. 如何對進程終止執行操作?
- 12. 如何阻止jQuery Mobile使用window.location執行任何操作?
- 13. 用戶在iOS上關閉應用程序後執行操作
- 14. 在應用程序關閉時運行「終止」代碼
- 15. 如何防止應用程序執行?
- 16. 如何停止執行應用程序
- 17. 如何阻止運行在iOS上的應用程序作爲服務
- 18. iOS終止應用程序的原因
- 19. 如何防止Tkinter和Pyserial阻止整個程序的執行
- 20. 如何在終止時執行相同的程序?
- 21. 阻止應用程序關閉
- 22. 如何在終止時運行快速應用程序?
- 23. 並行執行始終阻止
- 24. 當應用程序終止時執行後臺任務
- 25. 當TaskManager或CMD終止應用程序時執行代碼
- 26. 非終止/非阻止Windows Mobile應用程序
- 27. pyqt5 - 關閉/終止應用程序
- 28. Spark應用程序終止執行程序
- 29. 使用java執行和終止任何OSX應用程序
- 30. 運行終端程序時阻止終端輸入
嗯,我懷疑這是可能的。如果用戶希望終止該應用程序,它將被終止。我嚴重懷疑蘋果會允許你這麼幹擾他們的用戶體驗,並阻止他們終止一個應用程序。您最可能做的就是在終止時向他們發送通知,通知他們需要重新打開應用程序並允許大量時間。 – MikeG
@MikeG我不想覆蓋用戶強行終止我的應用程序或關鍵的操作系統條件,如低內存。我只是試圖阻止iOS在更常見的情況下更新固件(即內存不錯,但用戶按下主頁按鈕並在等待此固件更新期間開始瀏覽網頁時)更新固件時殺死我的應用程序。 – JacobJ
@Rob感謝羅布,這兩個信息是優秀的(3分鐘的限制,藍牙中央提及)。如果你想把這些答案放在答案中,我會接受它作爲解決方案。 – JacobJ