Мое приложение основано на Google Map
и Location
, которые включают взаимодействие клиент-сервер. Помимо всего этого, периодически я хочу обновлять местоположение пользователя на веб-сервере. Я сам подумал и пришел к двум нижеприведенным сценариям:
Первый: я использую класс Service
для периодического получения данных о местоположении пользователя (примерно 2-3 часа один раз) и обновления на сервере. В идеале я хочу избежать этого! Потому что просто загружать местоположение пользователя нехорошо постоянно запускать службу, вот что я чувствую.
Второе мнение: я могу использовать IntentService
для периодического получения местоположения пользователя (с учетом тех же 2-3 часов) и обновления на веб-сервере. Здесь IntentService
будет вызываться AlarmManager
. То есть каждые 2-3 часа один раз аларм-менеджер будет запускать IntentService
.
Но я чувствую, что использовать AlarmManager
в течение 2-3 часов один раз тоже не очень хорошая идея.
Я хочу понять, какой из них будет эффективнее и актуальнее! Может ли этот сценарий быть реализован в каком-либо другом подходе? Если это так, помогите мне сделать это!
Заранее спасибо...
AlarmManager
. Запускайте службу только тогда, когда она активно приносит пользу пользователю а>. Наблюдение за ходом часов не несет активной ценности для пользователя. Может ли этот сценарий быть реализован в каком-либо другом подходе? -- запрашивать обновления местоположения каждые 2-3 часа доPendingIntent
. - person CommonsWare   schedule 12.12.2015AlarmManager
вместе сPendingIntent
. Ожидающее намерение отправит широковещательную рассылку классу получателя, оттуда я должен получить местоположение и обновить его на сервере! Я прав? - person Kavin Prabhu   schedule 12.12.2015getLastKnownLocation()
дляLocationManager
, что может вернуть устаревшее местоположение илиnull
. Если вам нужно убедиться, что вы получаете исправление текущего местоположения, это будет намного сложнее. Получение местоположения является асинхронным (поскольку устройству может потребоваться включить GPS-радио и ждать спутниковых данных) и сопряжено с проблемами (например, пользователь не может получить сигнал GPS). Вы закончите использоватьWakefulBroadcastReceiver
в сочетании сService
. - person CommonsWare   schedule 12.12.2015PendingIntent
. В классеBroadcastReceiver
я все время получаю местоположение как методnull. In
onReceive`, который я использовалLocation location = (Location) intent.getExtras().get(LocationManager.KEY_LOCATION_CHANGED);
В SplashScreen я реализовалGoogleApiClient
,ResultCallback
для настроек местоположения иLocationListener
. В обратных вызовахonConnected(Bundle b)
прописалPendingIntent
. Теперь, как получить местоположение вместо нуля? - person Kavin Prabhu   schedule 12.12.2015