为什么PauseWorkoutSession of Health存储不会暂停会话?

时间:2016-09-30 17:11:18

标签: swift watchkit health-kit watch-os-3

我正在创建一个iWatch应用程序,它读取HeartRate数据,然后我用它来绘制一些图形。应用程序中有2个按钮,一个用于暂停锻炼,另一个用于恢复锻炼。单击“暂停”按钮,我调用了healthStore的pauseWorkoutSession方法:

healthStore.pauseWorkoutSession(workoutSession!)

OnClick of Resume Button,我正在调用healthStore的resumeWorkoutSession方法:

healthStore.resumeWorkoutSession(workoutSession!)

要获取HeartRate数据,我运行以下代码:

let quantityType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
            let datePredicate = HKQuery.predicateForSamplesWithStartDate(instanceDel.workoutSessionStartDate, endDate: nil, options: .StrictStartDate)


            let updateHandler: (HKAnchoredObjectQuery,[HKSample]?,[HKDeletedObject]?,HKQueryAnchor?,
                NSError?)-> Void  = {query, samples, deleteObjects, newAnchor, error  in

                    if !self.instanceDel.workoutPaused {
                        //do something 
                    }
            }

heartRateQuery = HKAnchoredObjectQuery(type: quantityType, predicate: datePredicate, anchor: nil, limit: Int(HKObjectQueryNoLimit) , resultsHandler: updateHandler)            
heartRateQuery!.updateHandler = updateHandler
instanceDel.healthStore.executeQuery(heartRateQuery!)

我面临的问题是,即使锻炼暂停,也会不断调用更新处理程序,并且新的心率值会不断添加到样本数组中。 pauseWorkoutSession究竟做了什么? ISN' 它是否会暂停训练课程以便新的心率读数出现?

1 个答案:

答案 0 :(得分:1)

暂停锻炼不是为了防止watchOS收集心率样本或任何其他类型的样本。以这种方式思考 - 即使手表没有记录锻炼,它仍然可以收集心率,步数,距离,卡路里等。

如果您想忽略会话暂停时录制的样本,则应停止查询或忽略样本。