我开始行程时有一个驾驶应用程序我必须收集位置详细信息以及每小时,分钟,秒和毫秒的日期和时间以及加速度计详细信息以及小时,分钟,秒和日期和时间。每0.25秒毫秒,当行程停止时,应停止记录。我已经采用了计时器来查找位置详细信息,间隔为1秒
self.locationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(locationTimerFired:)
userInfo:nil
repeats:YES];
- (void) locationTimerFired:(NSTimer *)timer
{
CLLocation *newLocation = locationManager.location;
[self updateLocation:newLocation andSpeed:newLocation.speed];
[defaultCenter postNotificationName:LocationChangedNotification
object:nil
userInfo: userInfo];
}
收到的LocationChangedNotification中的我正在记录每秒提到的位置和时间。
当应用程序处于前台时,有时会很好,但是当应用程序处于后台计时器计时器时,间隔时间不准确,它有时会持续2秒,持续3秒,有时会每秒2次,为什么会发生这种情况? 请建议。此外,我已在info.plist中以后台模式注册位置更新。
我已经为加速计详细信息定时,间隔为0.25秒,如下所示
self.accelTimer = [NSTimer scheduledTimerWithTimeInterval:0.25
target:self
selector:@selector(timerFired:)
userInfo:nil
repeats:YES];
感谢。
答案 0 :(得分:0)
不要使用计时器。相反,配置位置管理器以按照您所需的精度(可能是最大值)为您提供回调,并使用回调来保存当前时间的位置和速度。
然后,当您使用/显示数据时,您可以过滤/外推以获得所需时间间隔的位置数据。
定时器在后台不起作用,因为它们不适用于。位置回调旨在......