2012-04-10 2 views
1

Я пользуюсь BroadcastReceiver и вам нужно найти GPS-координаты для телефона на основе входящих SMS-сообщений.BroadcastReceiver, IntentService и обратные вызовы GPS

Я использую довольно стандартный класс, который возвращает параметр LocationResult для обратного вызова, но если я использую его в классе BroadcastReceiver, это может занять слишком много времени и быть убитым ОС.

Я пробовал использовать службу, но это вызывает проблемы ANR, если одновременно происходят два события.

Я слышал, что использование потоков в BroadcastReceiver - это рецепт катастрофы, поэтому даже не попробовал это.

Теперь я использую IntentService для размещения входящих запросов и обработки поиска местоположения GPS. Мой вопрос заключается в том, как использовать код с обратным вызовом, чтобы он не умирал, когда onHandleIntent заканчивается? Я думал об использовании сна, но это не похоже на полированное решение.

Есть ли лучший способ сделать это? Я должен использовать BroadcastReceiver, но вам нужен умный способ позволить GPS найти местоположение в течение 15-20 секунд.

Любые идеи были бы высоко оценены! (Android noob здесь).

ответ

0

Я пробовал использовать службу, но это вызывает проблемы ANR, если одновременно происходят два события.

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

Мой вопрос заключается в том, как использовать код с обратным вызовом, чтобы он не погиб, когда onHandleIntent заканчивается?

Именно поэтому IntentService не является отличным ответом на вашу проблему. Вам нужен обычный Service, но тот, где вы делаете работу в своей фоновой нити, останавливает обслуживание, когда вы закончите, и т. Д.

У меня есть реализация концепции доказательств в виде LocationPoller ,

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