Должен ли я использовать android LocationManager.getBestProvider каждый раз, когда я запрашиваю обновления местоположения?

Я использую API Google, MapActivity, MapView и т. Д.
Когда мне нужно получить мое текущее местоположение, я использую этот код ПЕРВОЕ ВРЕМЯ:

myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); // Sets the criteria for a fine and low power provider Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_FINE); crit.setPowerRequirement(Criteria.POWER_LOW); // Gets the best matched provider, and only if it's on String provider = myLocationManager.getBestProvider(crit, true); // If there are no location providers available if (provider == null){ OnClickListener listener = new OnClickListener() { public void onClick(DialogInterface dialog, int which) { // Closes the activity finish(); } }; Utils.getInstance().showAlertDialog(this, R.string.warning_dialog_title, R.string.no_location_providers_error_message, android.R.drawable.ic_dialog_alert, false, listener); } // Location services is enabled else{ myLocationListener = new MyLocationListener(); myLocationManager.requestLocationUpdates( provider, 0, 0, myLocationListener); // TODO - put a marker in my location GeoPoint currentGeoPoint = MapUtils.getInstance(). getCurrentLocation(myLocationManager, provider); // Center to the current location centerLocation(currentGeoPoint, MAX_ZOOM); } 

У меня также есть кнопка «назад к текущему местоположению» – когда пользователь перемещает карту и хочет быстро вернуться в свое текущее местоположение.

Мой вопрос: должен ли я использовать метод getBestProvider() каждый раз, когда я хочу получить информацию о местоположении?

Я мог бы сохранить последнего выбранного поставщика, но условия могут меняться каждую секунду:

  1. Пользователь отключил GPS
  2. Нет сигнала GPS
  3. NETWORK_PROVIDER лучше в текущей ситуации
  4. и т.д..

Каков правильный подход?

Как было сказано на коментах, это ответ: http://developer.android.com/guide/topics/location/strategies.html#BestEstimate

Вы всегда можете использовать это, но не забудьте проверить Location.getTime () ->, это сообщит вам о времени, когда оно было исправлено, и вы можете легко различать свежие и устаревшие исправления местоположения.