核心位置距离过滤电池寿命

时间:2012-10-10 17:33:36

标签: ios core-location battery

更改distanceFilter值是否会对电池寿命产生影响?如果是这样,这是什么影响,为什么会产生任何影响呢?

1 个答案:

答案 0 :(得分:6)

distanceFilter属性对电池寿命没有影响或影响极小。所有它确实限制了代表对其移动的每n米的调用。如果你想用gps来节省电池寿命,那么我建议你只打开gps并每隔n秒读取一次读数,然后再将其关闭直到下一次读数。我会用一个计时器。如果您希望此功能在后台运行,请执行以下步骤:

  1. 在您的应用程序plist文件中,将“app registers for location updates”添加到Required background modes键。

  2. 在您的applicationDidEnterBackground方法中执行类似这样的操作

    UIBackgroundTaskIdentifier __block bgTask;
    
    UIApplication *application = [ UIApplication sharedApplication];
    
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
        //Prevent from going inactive by starting location update
        [[ ApplicationContext sharedInstance].coreLocationController startUpdatingLocation ];
        [application endBackgroundTask:bgTask];
         bgTask = UIBackgroundTaskInvalid;
     }];
    
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
       while (YES) {
          if ( [[UIApplication sharedApplication] applicationState] == UIApplicationStateActive ) {
            break;
        } else {
         //DO something in the background
        }
    
    }
    });
    

    在应用程序到期之前启动位置管理器的位置,以确保它在后台继续处于活动状态。这将允许应用程序始终在后台运行,以便您可以通过打开/关闭gps间歇性地检查位置