2015-12-21 89 views

回答

2

答案是「理論上是,但通常不是。」

應用程序實際上具有比活動和背景更多的狀態。

的情況是:

  1. 活動
  2. 背景(仍然在運行,而另一個應用在前臺)
  3. 暫停(在內存中,但沒有得到任何CPU時間)
  4. 不運行。 (不再運行或在內存中)。

當用戶交換應用程序,按下主頁按鈕或鎖定他們的設備時,您的應用程序會收到通知它將進入後臺,但實際上只會在很短的時間背景。它幾乎立即轉換爲暫停。一旦你被暫停,你可以隨時終止,恕不另行通知。

如果您需要更多時間來完成任務,當您收到通知您正在移動到後臺時,可以使用beginBackgroundTaskWithExpirationHandler呼叫請求該任務。不過,截至撰寫本文時,您最多隻需要3分鐘,然後您的到期處理程序就會啓動並且您的應用程序被暫停。

由於這個原因,您實際上並不會在後臺運行很長時間,而且很可能在用戶鎖定屏幕(或自動鎖定)時,您已被暫停,並且不會得到通知。

+0

我的用例是,用戶可以切換到另一個應用程序一段時間(<= 1分鐘)只是爲了改變事情,並切換回我們的應用程序。如果我設置了一個新的計時器,當應用程序放在後臺時,你認爲這是可能的嗎?你認爲蘋果會允許嗎? –

+0

我相信只要你只在短時間內在後臺運行,並且明確定義了原因,他們也會一直這樣。雖然我不會爲蘋果說話。 –

0

是否有可能(A)檢測到鎖?

否,原因有二:

  • 無法檢測,在任何情況下,該屏幕已被鎖定。即使你的應用程序是最前面的,當屏幕鎖定時,所有學習的是,你的應用程序是後臺接地,沒有你能夠學習爲什麼

  • 您的的情況下,到屏幕鎖定時,您的應用程序甚至沒有運行 - 它已被暫停。所以它不能「檢測」什麼東西

+0

至於你的第一個陳述,它**是**可能檢測到屏幕已被鎖定。 (你使用'notify_register_dispatch'。參見[**這個線程**](http://stackoverflow.com/questions/14229955/is-there-a-way-to-check-if-the-ios-device-is )然而,第二個原因仍然存在,使鎖定通知不是非常有用,除非你的應用程序設置爲在後臺運行。 –

相關問題