4

値を変更すると、distanceFilterバッテリーの寿命に影響がありますか?もしそうなら、この効果は何ですか、そしてなぜそれは何らかの効果を持つべきですか?

4

1 に答える 1

6

distanceFilter プロパティは、バッテリー寿命にまったく影響を与えないか、ごくわずかしか影響しません。デリゲートへの呼び出しは、移動する n メートルごとに制限されます。バッテリー寿命を節約することがGPSでやりたいことである場合は、GPSをオンにしてn秒ごとに読み取りを行い、次の読み取りまで再びオフにすることをお勧めします. 私ならタイマーを使います。これをバックグラウンドでも機能させたい場合は、次の手順を実行します。

  1. アプリの plist ファイルで、「アプリは位置情報の更新を登録します」を必須のバックグラウンド モード キーに追加します。

  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 のオン/オフを切り替えることで断続的に場所を確認できます。

于 2012-10-10T19:11:56.233 に答える