2012-06-26 117 views
10

如果我撥打startUpdatingLocationstartMonitoringSignificantLocationChanges正在運行,會發生什麼情況? significantLocationChange監控是否停止?如果我然後stopUpdatingLocation將significantLocationChange監視繼續或重新啓動?startMonitoringSignificantLocationChanges和startUpdatingLocation如何互相影響?

我找不到有關這兩種監控位置之間相互影響的文檔。

+0

嘿,你有沒有找到關於這方面的更多信息?特別是交互部分。如果另一個啓動,iOS是否停止運行? – Philiiiiiipp

+0

你是否知道在backgroundState中獲得'startMonitoringSignificantLocationChanges'後是否可以執行'startUpdatingLocation'? – Honey

+0

我很抱歉,但我多年沒有使用這個API。你爲什麼不問一個新問題? – Undistraction

回答

3

它們並不意味着同時使用。無論是因爲他們都將標題和位置更改傳遞給相同的委託方法。

的LocationManager:didUpdateToLocation:fromLocation

它們在頻率和精確度(和使用擴展的硬件和功率消耗)的變化而不同。您作爲開發人員需要根據您的使用情況決定哪一個最佳

我需要在不同的時間使用這兩種方法。當我從一個切換到另一個時,我設置了一個標誌,可以在委託中引用,以便我知道更新的類型。

+1

謝謝。這正是我目前正在做的。我用我自己的服務包裝了CLLocationService,並使用它爲正在使用的服務類型設置標誌。我只是對這兩者如何相互作用感興趣。有趣的是蘋果文檔完全忽略了這個話題。 – Undistraction

+1

在最新的文檔中,Apple確實提到它們可以同時運行,但沒有提供任何有關交互的細節。 「如果兩個位置服務同時啓用,它們使用同一組委託方法傳遞事件。」 https://developer.apple.com/reference/corelocation/cllocationmanager –

14

我不認爲接受的答案真的回答了問題。我做了一些測試,如果你願意,你可以同時使用它們,它們不會相互抵消。

爲什麼有人想要使用兩者?因爲startMonitoringSignificantLocationChanges可以在不需要任何背景模式的情況下將應用程序從掛起或終止中喚醒。所以如果你同時運行,你可以得到準確的前景位置更新和重大的位置更改背景位置更新。

當然,你可以切換的方法,去的時候進入的背景,但一),這不是問題二)它增加了不必要的邏輯

當然,還有一個問題,如果運行的兩種方法水渠更多的電池,但我敢打賭,它沒有。

1

標準位置服務和重要的位置更改服務可以一起使用。從the API Reference報價:

如果這兩個位置服務的同時啓用,他們提供使用同一組的委託方法 事件。

使用兩者的一個很好的理由是,標準服務提供更高的準確性,而重要的位置更改服務即使在您的應用程序被暫停時也能正常工作。