2014-09-30 58 views
5

我使用狀態保存和恢復。使用kill(getpid(), SIGKILL);模擬內存壓力後,該應用程序被殺死,然後被喚醒,我收到來自CBCentralManagerDelegate的通知,我可以與外設進行通信。iOS在什麼條件下核心藍牙恢復工作?

  1. iOS的重新啓動:後

    是否應恢復工作?

  2. 用戶從多任務欄中殺死應用程序?

根據像這樣的帖子:Long-Term Actions after app is killed,點2是不可能的。

  1. 如果恢復功能對於1或2分不起作用,那麼在這種情況下我怎麼能夠「重新組合」我的外圍設備?
+0

iOS重新啓動後,我在設備控制檯中看到以下內容。因此,iPhone以某種方式獲取電池通知,但該應用程序不會醒來。我已經在iOS 7.1.1中測試過: Oct 14 12:56:13 iPhonexxxx BTLEServer [98] :(注)外設「MyPeripheral」的電池電量:92% Oct 14 12:56:18 iPhonexxxx BTLEServer [98 (注)外設「MyPeripheral」的電池電量:92% Oct 14 12:56:23 iPhonexxxx BTLEServer [98] :(注)外設「MyPeripheral」的電池電量:92% – Maria 2014-10-14 11:37:25

回答

7

復修工程的情況下,當應用程序被OS殺死:

  • 呼叫kill(getpid(), SIGKILL)
  • OS殺死,而在後臺

在任何其他情況下,應用程序是不是恢復。背後的原因可能是用戶想殺死應用程序的意圖,所以不應該重新啓動。這可能不適用於重新啓動,但蘋果公司已經這樣處理它。

迄今爲止,iOS 8中沒有關於重啓動後重啓的報告。

任務欄殺死後無法重新啓動,但重新啓動時有另一種解決方案。您可以註冊重大位置更改,以便在重新啓動後恢復應用程序。這對我來說非常可靠。

+0

謝謝@allprog。重大的位置變化?你的意思是使用信標?我的外設不用於定位目的,但我們可以考慮它。 – Maria 2014-09-30 16:36:56

+0

不,我的意思是[CLLocationManager的重要位置更改](https://developer.apple.com/Library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497 -CH2-SW8)。 iBeacons也可以工作,但我沒有嘗試過。 – allprog 2014-10-01 13:32:54

+0

我剛剛嘗試了重要的位置更改解決方案,但無法完成工作。我的應用程序收到第一個重要的位置更改(我在後臺啓動時啓動它),但是當我的手機重新啓動我的應用程序時不會重新啓動。手機是否需要進行重大位置更改才能重新啓動?謝謝 – 2014-10-02 08:18:00