繁体   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