首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Healthkit后台交付秒内多次调用

Healthkit后台交付秒内多次调用
EN

Stack Overflow用户
提问于 2020-05-15 09:38:05
回答 1查看 341关注 0票数 0

我有一个运行以下代码的应用程序,当应用程序在后台/挂起/终止时,它每小时都会运行一次,因为从appdelgate调用desired.The代码,所以它每小时都会运行一次

代码语言:javascript
复制
didFinishLaunchingWithOptions

然而,它实际上是每小时触发3-6次查询,所有这些都在一秒之内,因此数据访问我的服务器的次数超过了所需的3-6次。

我从health kit中读到了很多关于后台交付的问题,但似乎没有一个涉及这个问题。

我读到这可能是因为我每次都在注册后台刷新,我应该检查我是否已经注册并且没有重新注册,但我不知道如何检查,并且找不到任何甚至提到这个过程的文档引用。我也不知道这是否是问题所在,因为代码每小时运行的次数是如此多变。

任何帮助都将不胜感激。

代码语言:javascript
复制
 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)
 }
EN

回答 1

Stack Overflow用户

发布于 2020-05-25 15:09:39

我终于意识到这个查询多次让self.updateKJandSteps()兴奋,因为查询返回了多个条目。我添加了一个检查,以确保self.updateKJandSteps()没有运行,这修复了问题,现在只进行了一次更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61810281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档