Intereting Posts
Активность просочилась в окно / диалог (это снова!) Изменение цвета выделения и заголовка фрагментов в PreferenceActivity Могу ли я установить флаг BuildConfig, который возвращает, будет ли apk построена с помощью задачи «connectedAndroidTest»? Фрагмент в ViewPager не восстановлен после popBackStack Как получить доступ к файлу в папке с ресурсами? Разница между getDefaultSharedPreferences и getSharedPreferences Библиотека Picasso, Android: использование приемника ошибок Должны ли пользователи предоставлять разрешение com.android.vending.BILLING при обновлении / установке? Как получить доступ к Wi-Fi-сетям и отобразить их в списке в Android Как подключить клиент Android к локальному серверу Apache (php) внутри моего ноутбука? Использование Proguard с Android без обфускации Как удалить границу только с одной стороны элемента? Как использовать Seekbar в android как seekBar, а также progressBar одновременно? Facebook SDK импортировать в Android Studio и добавить его в мое приложение Как обновить галерею после удаления изображения с SDCard

Android, запрос на размещение, установка срока действия не работает

Я использую новый API местоположения, который был введен в I / O 2013.

Он отлично работает, и у меня нет проблем с его результатами. Моя проблема в том, что я устанавливаю setExpirationDuration(WHATEVER_MILLIS) на все миллионы, однако он работает в течение одной минуты.

Это мой код:

 LocationRequest locationRequest = LocationRequest.create() .setInterval(10 * 60 * 1000) // every 10 minutes .setExpirationDuration(10 * 1000) // After 10 seconds .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

Когда я запускаю приложение, индикатор сателлита будет отображаться в лотке, поэтому я ожидаю увидеть его всего 10 секунд. Однако через минуту он исчезнет.

Любое предложение или комментарии будут оценены. Благодарю.

Solutions Collecting From Web of "Android, запрос на размещение, установка срока действия не работает"

Поскольку это кажется реальной проблемой в Android, обходным решением может быть Handler для удаления обновлений местоположения вручную.

  listHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0) { mLocationClient.removeLocationUpdates(MyActivity.this); //Location Updates are now removed } super.handleMessage(msg); } }; 

После запроса обновлений местоположения (на максимальную продолжительность 10 секунд) вы вызываете этого обработчика, конечно, отложенного на 10 секунд.

 myLocationClient.requestLocationUpdates(...); listHandler.sendEmptyMessageDelayed(0, 10000); 

Это гарантирует, что через 10 секунд ваши обновления местоположения будут удалены.

В документации ( https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long) )

В нем говорится, что: «Продолжительность начинается немедленно (а не когда запрос передается клиенту местоположения), поэтому повторите этот метод, если запрос будет повторно использован позднее».

Можно было бы ожидать, что эта продолжительность начнется, когда будет вызываться следующая строка:

 LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this); 

Но, согласно документации, эта длительность начинается с создания объекта запроса.