簡體   English   中英

如果我開啟了位置服務,那么進入后台模式后如何殺死我的應用?

[英]If I have location services turned on then how can my app get killed when it enters background mode?

我的應用程序在后台運行時被殺死。

但是,出於位置跟蹤的目的,我的應用始終在后台保持活動狀態。

我已經與遇到此問題的用戶進行了交談,他們說他們的locationTracking設置為“始終”並且尚未關閉。

我假設即使該應用程序在后台(未掛起),由於內存警告,它仍可能會刷新出內存。

我的問題除了記憶之外還有其他原因嗎? 我查看了Apple文檔,發現這可能是由於+ 80%的CPU在后台運行了1分鍾以上,但這沒有發生。 我知道崩潰也可能是該應用再次啟動的原因,但是我們的崩潰並沒有增加。 我們沒有在locationManager類中看到任何崩潰,並且我們在后台所做的唯一一件事就是跟蹤位置並進行API調用。

我新添加到locationManager類的唯一一件事是以下額外檢查:

private func checkLocationAccuracy(from location: CLLocation) throws {

    let ageOfLocation = -location.timestamp.timeIntervalSinceNow

    if ageOfLocation >= maximumAcceptedStale {
        throw LocationAccuracyError.stale(secondsOld: ageOfLocation)
    }

    if location.horizontalAccuracy <= 0 {
        throw LocationAccuracyError.invalid
    }

    if location.horizontalAccuracy > MaximumAcceptedHorizontalAccuracy{
        throw LocationAccuracyError.lowAccuracy(metersOff: location.horizontalAccuracy)
    }
}

如果拋出錯誤,那么我將其記錄下來。 否則,我只是打一個網絡電話。 這項額外的檢查將減少網絡呼叫,因此我猜測它應該更有效地節約能源。

編寫的代碼有問題。

僅在用戶更改應用程序的“位置(權限)設置”時才發生。 顯然,這是沒有針對測試的方法!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM