iOS 12在关闭我的应用程序方面更具进取心吗?

时间:2019-02-07 23:22:28

标签: ios swift iphone

因此,我写了一个用于滑雪/单板滑雪的统计追踪器,上赛季效果不错。这个季度,即使我已设置为接收后台位置更新,我仍然很难保持该应用程序的正常运行。

以下是计时器在后台运行的一些任务:

-解析数组/字典并执行计算

-接收数据并将其发送到Firebase

-将数据记录到CoreData

只要我有细胞信号,事情就更有可能存活下来,但不能保证。

iOS 12与11相比有什么变化吗?

这是我开始位置更新的代码:

        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.activityType = .other
        locationManager.allowsBackgroundLocationUpdates = true


        locationManager.pausesLocationUpdatesAutomatically = false
        locationManager.showsBackgroundLocationIndicator = true

        locationManager.startUpdatingLocation()

如果iOS试图杀死位置管理器,更改活动类型,更改准确性,我尝试过locationManagerDidPauseLocationUpdates重新启动位置更新,尽管将活动类型更改为其他确实延长了应用程序死亡之前的时间,但似乎没有任何效果我以为locationManagerDidPauseLocationUpdates会重新启动它,但没有骰子。

还有其他关于在录制过程中保持动态的想法吗?

编辑:我也尝试过检查内存泄漏

edit2:添加了info.plist的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:0)

所以我不知道为什么,但是经过一些实验和四处移动之后,我似乎已经修复了它。

我将CllocationManager作为一个单例,并在多个VC之间共享时将其移到一个结构中,以免实例化一次以上。

然后我搬了

    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.activityType = .other
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.pausesLocationUpdatesAutomatically = false
    locationManager.showsBackgroundLocationIndicator = true

超出其自身的功能,进入仍然无法正常工作的viewDidLoad(),因此我将其移至viewDidAppear(),现在我的应用已运行8个小时而没有打h。我不确定我以前共享位置管理器的方式是否引起第二次实例化,并将位置管理器设置重置为默认值,这将导致locationManager.pausesLocationUpdatesAutomatically自动变为真(不确定只是猜测)