因此,我为滑雪/单板滑雪写了一个统计跟踪器,上个赛季工作得很好。这一季,即使我被设置为接收后台位置更新,我也很难让应用程序存活下来。
以下是一些在后台运行的计时器任务:
-Parsing数组/字典和执行计算
-Receiving和将数据发送到firebase
到CoreData的-Recording数据
只要我有细胞信号,东西就有更好的存活机会,但不能保证。
iOS 12 vs 11有什么变化吗?
下面是我开始位置更新的代码:
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .other
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.showsBackgroundLocationIndicator = true
locationManager.startUpdatingLocation()我已经尝试过locationManagerDidPauseLocationUpdates在iOS试图杀死它时重新启动位置更新,更改活动类型,更改准确性,似乎什么都不起作用,尽管将活动类型更改为other确实延长了应用程序死亡前的时间,所以我以为locationManagerDidPauseLocationUpdates会重启它,但没有骰子。
有没有其他关于在录制的同时让东西保持活力的想法?
编辑:我也尝试过检查内存泄漏
edit2:新增info.plist截图

发布于 2019-02-10 07:28:31
所以我不知道为什么,但经过一些实验和移动东西后,我似乎已经修复了它。
我将CllocationManager作为一个单例,并将其移动到一个结构中,因为我在多个VC之间共享它,以便不会实例化它一次以上。
然后我就搬走了
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .other
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.showsBackgroundLocationIndicator = true退出它自己的函数,进入viewDidLoad(),它仍然不起作用,所以我把它移到了viewDidAppear(),现在我的应用程序已经运行了8个小时,没有出现任何问题。我不确定我之前分享位置管理器的方式是否会导致第二次实例化,并将位置管理器设置重置为默认值,这将导致locationManager.pausesLocationUpdatesAutomatically变为真(不确定,只是猜测)
https://stackoverflow.com/questions/54583852
复制相似问题