2013-10-24 2 views
0

Я пытаюсь понять, как запрос LocationManagerLocationUpdates (используя PendingIntent) работает, когда вызывающий компонент выходит из своего видимого/активного lifecyle. Я знаю, как отменить намерение с помощью removeUpdates, и я прочитал всю документацию о том, как все службы, широковещательные передачи и действия запускаются в основном потоке приложения, что вы можете создавать рабочие потоки, чтобы не разрушать пользовательский интерфейс опыт и т. д., но когда дело доходит до вызовов типа requestLocationUpdates, где API заботится о периодической отправке намерений, он становится реальным нечетким относительно того, что происходит с этой функциональностью, когда вызывающая активность выходит из ее видимого срока службы. Например, если я вызываю requestLocationUpdates (используя версию PendingIntent) из Activity, и эта активность останавливается ОС без моего вызова кода removeUpdates для этого PendingIntent, делают ли PendingIntents для отправки обновлений местоположения прекратить отправку? что, если действие приостановлено? Если я хочу, чтобы обновления местоположений продолжали поступать, даже когда активность выходит из видимого срока жизни или даже активного времени жизни, следует ли мне вызвать requestLocationUpdates из службы, запущенной в фоновом потоке, который я создаю из Activity? Любые разъяснения по этому вопросу будут весьма признательны.Жизненный цикл Android функции requestlocationupdates

ответ

0

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

+0

Спасибо за совет. Я попробую. Кстати, вы знаете какую-либо хорошую документацию по запросуLocationUpdates, которая объясняет, когда и почему вы должны называть ее из разных компонентов. Я обеспокоен тем, что, как только я его заработаю, он будет работать некоторое время, но поскольку я этого не понимаю, я могу столкнуться с ситуацией, когда она терпит неудачу, потому что потребовалось время, чтобы добраться до этого сценария. Я исследовал это немного, и кажется, что большинство ответов соответствуют строкам «попробуй, похоже, это работает». Меня беспокоит только то, что у меня возникнут проблемы, если я не пойму, почему я его реализую определенным образом. Thx – user1057118

+0

к сожалению нет. Я научился этому трудно, когда я разработал функцию тренировки gps для фитнес-приложения. не доверяйте службам, чтобы остаться в живых. андроид попытается убить его, когда он действительно работает на низкой памяти. сохраняйте свои GPS-точки настойчиво. возможно, sqlite. если вы собираетесь разработать приложение для отслеживания gps, mytrack - хорошая рекомендация. https://code.google.com/p/mytracks/ – hepizoj

+0

Хорошо, спасибо за информацию! – user1057118

Смежные вопросы