我有一个运行以下代码的应用程序,当应用程序在后台/挂起/终止时,它每小时都会运行一次,因为从appdelgate调用desired.The代码,所以它每小时都会运行一次
didFinishLaunchingWithOptions然而,它实际上是每小时触发3-6次查询,所有这些都在一秒之内,因此数据访问我的服务器的次数超过了所需的3-6次。
我从health kit中读到了很多关于后台交付的问题,但似乎没有一个涉及这个问题。
我读到这可能是因为我每次都在注册后台刷新,我应该检查我是否已经注册并且没有重新注册,但我不知道如何检查,并且找不到任何甚至提到这个过程的文档引用。我也不知道这是否是问题所在,因为代码每小时运行的次数是如此多变。
任何帮助都将不胜感激。
func startObservingKJ() {
print("BG Code Called")
let KJQuantityType = HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned)!
self.healthStore.enableBackgroundDelivery(for: KJQuantityType, frequency: .hourly) { (success, error) in
if let unwrappedError = error {
print("could not enable background delivery KJ: \(unwrappedError)")
}
if success {
print("background delivery enabled KJ")
}
}
let query = HKObserverQuery(sampleType: KJQuantityType, predicate: nil) { (query, completionHandler, error) in
self.updateKJandSteps() {
completionHandler()
}
}
healthStore.execute(query)
}发布于 2020-05-25 15:09:39
我终于意识到这个查询多次让self.updateKJandSteps()兴奋,因为查询返回了多个条目。我添加了一个检查,以确保self.updateKJandSteps()没有运行,这修复了问题,现在只进行了一次更新。
https://stackoverflow.com/questions/61810281
复制相似问题