値を変更すると、distanceFilter
バッテリーの寿命に影響がありますか?もしそうなら、この効果は何ですか、そしてなぜそれは何らかの効果を持つべきですか?
質問する
1137 次
1 に答える
6
distanceFilter プロパティは、バッテリー寿命にまったく影響を与えないか、ごくわずかしか影響しません。デリゲートへの呼び出しは、移動する n メートルごとに制限されます。バッテリー寿命を節約することがGPSでやりたいことである場合は、GPSをオンにしてn秒ごとに読み取りを行い、次の読み取りまで再びオフにすることをお勧めします. 私ならタイマーを使います。これをバックグラウンドでも機能させたい場合は、次の手順を実行します。
アプリの plist ファイルで、「アプリは位置情報の更新を登録します」を必須のバックグラウンド モード キーに追加します。
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 に答える