CLLocationManager заморозить мое приложение при возвращении из фонового состояния? - PullRequest
0 голосов
/ 28 марта 2012

Я использую CLLocationManager в других представлениях моего приложения и при возврате из фонового состояния некоторое зависание на 2-3 секунды, не реагируя на взаимодействие с пользователем.

В моем AppDelegate я использую этот код:

   _locationManager = [[CLLocationManager alloc] init]; 
   // Get the location if the user
    if ([CLLocationManager locationServicesEnabled]) 
    {
       [self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
       [self.locationManager setDistanceFilter:50];
       [self.locationManager startUpdatingLocation];
    }

В другом виде я использую этот код:

    _locationManager = [[CLLocationManager alloc] init];
    if ([CLLocationManager locationServicesEnabled]) 
    {
       [self.locationManager setDelegate:self];
       [self.locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
       [self.locationManager setDistanceFilter:50];
       [self.locationManager startUpdatingLocation];
    }

      // Delegate
    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
   {   
         // Set the map view to the current location
         MKCoordinateSpan span;
         span.latitudeDelta = 0.01;
         span.longitudeDelta = 0.02;

         MKCoordinateRegion region;
         region.span = span;
         region.center = newLocation.coordinate;

         [_mapView setRegion:region animated:YES];

    }

1 Ответ

0 голосов
/ 28 марта 2012

Используйте эти уведомления для включения (locationManager startUpdatingLocation) и выключения (locationManager stopUpdatingLocation), когда приложение входит в фоновый режим и становится активным:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(start) name:UIApplicationDidBecomeActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stop) name:UIApplicationDidEnterBackgroundNotification object:nil];
...