- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个问题要解决,我设置了一个 HKObserveryQuery
,它运行良好并为我收集了新数据。
但问题是,有时当我返回健康应用程序并在手动将其添加到健康应用程序后删除项目时,我注意到 HKObserverQuery
我已经设置了火灾两次非常接近,我试图解决这个问题,因为我使用这个观察者稍后上传一些数据,我不想重复。
如果能提供任何帮助,我将不胜感激。代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setup];
return YES;
}
- (void)setup
{
if ([HKHealthStore isHealthDataAvailable])
{
self.healthStore = [[HKHealthStore alloc]init];
NSSet *readTypes = [NSSet setWithObject:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]];
[self.healthStore requestAuthorizationToShareTypes:nil
readTypes:readTypes
completion:^(BOOL success, NSError *error)
{
if (!error && success)
{
[self observeHR];
[self.healthStore enableBackgroundDeliveryForType:
[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]
frequency:HKUpdateFrequencyImmediate withCompletion:^(BOOL success, NSError *error){}];
}
}];
}
}
- (void)observeHR
{
HKObserverQuery *query = [[HKObserverQuery alloc]initWithSampleType:[HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]
predicate:nil
updateHandler:^(HKObserverQuery *query, HKObserverQueryCompletionHandler completionHandler, NSError *error)
{
if (!error)
{
// Randomly called twice *VERY* close together
NSLog(@"Query");
[self queryWithCompletionHandler:completionHandler];
}
else
{
if (completionHandler)
{
completionHandler();
}
}
}];
[self.healthStore executeQuery:query];
}
控制台输出,注意时间:当只从 Health 应用程序中删除一项时会发生这种情况,这是不正确的。
2014-12-29 16:50:20.121 TestApp[174:5674] Query
2014-12-29 16:50:20.124 TestApp[174:5674] Query
最佳答案
我相信我现在已经解决了这个问题,方法是设置一个 BOOL 标志以防止调用第二个伪造的 HKObserverQuery,并无缘无故地消除重复处理。代码:
- (void)observeHR
{
HKObserverQuery *query = [[HKObserverQuery alloc]initWithSampleType:[HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]
predicate:nil
updateHandler:^(HKObserverQuery *query, HKObserverQueryCompletionHandler completionHandler, NSError *error)
{
if (!self.queryInProgress)
{
self.queryInProgress = YES;
if (!error)
{
[self queryWithCompletionHandler:completionHandler];
}
else
{
self.queryInProgress = NO;
if (completionHandler)
{
completionHandler();
}
}
}
else
{
NSLog(@"Query already in progress");
}
}];
[self.healthStore executeQuery:query];
}
关于ios - HKObserverQuery 连续两次随机调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27698876/
所以我一直按照这个答案中的说明进行操作... Healthkit background delivery when app is not running 代码运行良好,并且在应用程序打开时工作,并表示
我有一个应用程序需要跟踪来自 Apple Watch 的用户心率读数,所以我执行了在 Apple Guides 上找到的所有必需步骤,这是我正在使用的代码: static var query: HKO
我正在尝试使用 HealthKit API 对心率监测器进行编程。 我有一台 Polar H7,它正在将数据写入 Health 存储区。我使用 HKObserverQuery(没有丢失对 comple
我有一个问题要解决,我设置了一个 HKObserveryQuery,它运行良好并为我收集了新数据。 但问题是,有时当我返回健康应用程序并在手动将其添加到健康应用程序后删除项目时,我注意到 HKObse
因此,根据 Apple 的说法,在添加到 HK 的数据触发 updateHandler 后,我需要调用 HKObserverQueryCompletionHandler。 但是一旦我调用complet
在尝试为 Healthkit 设置观察者查询时,对于很多用户,我收到了Authorization not Determined 错误。 经过一番研究后,我发现只有在尝试将数据写入(共享)到 Healt
在 HealthKit 中,您创建一个 HKObserverQuery,执行它,然后启用 BackgroundDeliveryForType。 let backgroundQuery:HKObserv
HKObserverQuery 获取数据的格式是什么?没有NSArray 或NSDictionary 来存储数据然后如何获取。我正在查询无法获取所有数据,有人请帮忙吗? HKObserverQuery
我正在尝试学习 Apple HealthKit,我目前的目标是让我的应用程序在后台观察 HK 对某些样本类型的查询。我可以使用样本类型和谓词初始化观察者查询: let query = HKObserv
您好,我想收集用户健康数据。在 iOS 中,我们有 HKObserverQuery 来观察。因此,只要健康数据发生变化,例如步数发生变化,它就会唤醒我们的应用程序。 android 中是否有类似的东西
HKObserverQuery 有以下方法支持在后台接收更新: - initWithSampleType:predicate:updateHandler: updateHandler 有一个 comp
当我设置 HKObserverQuery 时,更新处理程序总是立即被调用(这是我没想到的)。正如您所期望的那样,当我通过 Health.app 添加数据点时,它也会被调用。我倾向于认为我对完成处理程序
我试图让 HealthKit 在有新数据可用时启动我的应用程序。因此,我尝试按照我发现的这个示例将 HKObserverQuery 与后台交付一起使用 on GitHub . 我为我的项目启用了后台模
通过使用以下代码,当 healthkit 中有可用数据时,我可以使用观察者查询自动读取心率数据。 HKSampleType *readGlucoseType; readGlucoseT
我是一名优秀的程序员,十分优秀!