2012-04-15 5 views
0

Я работаю над Android-приложением, которое использует GPS из нескольких видов деятельности. Я искал хороший способ получить доступ к GPS от всех видов деятельности без запуска/остановки GPS (получения событий) каждый раз, когда я перехожу от одной активности к другой. В этом link рекомендуется использовать службу и связывать/развязывать на OnStart/OnStop, так как они перекрываются.Android: обработка GPS из нескольких видов деятельности

Мне действительно нравится идея, однако я оставил с одной проблемой. Я бы хотел остановить GPS, когда мое приложение перестало быть активным (т. Е. Нажата кнопка дома). В этом случае будет вызываться только OnPause.

Любые идеи?

Спасибо.

ответ

0

Когда мы нажимаем кнопку «Главная», любая другая деятельность входит в первую часть части из цикла жизненного цикла активности, у нас также есть метод, который называется методом onUserLeaveHint.

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

Когда пользователь нажимает клавишу режима

Когда пользователь нажимает клавишу возврата

Когда пользователь нажимает сигнализатор бруску

в основном это намекает о пользователь пытается оставить свою деятельность. Это означает, что если вы работаете с onUserLeaveHint(), вам не нужно обрабатывать onBackPressed() в вашем коде.

+0

10x, но я получаю то же событие для спины так что это не решит проблему. –

+0

, так что вы хотите различать обратную клавишу и домашний ключ –

+0

Проблема заключается не только в домашней кнопке, например, при поступлении входящего вызова. –

2

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

Журнал, когда я перехожу от выбора активности к деятельности OSM, к активности карты Google, а затем удаляю домашнюю кнопку. (OSM и Google, как использовать сервис с местоположением GPS слушателя) (я приостановил OSM деятельность, чтобы изменить настройки предпочтений, следовательно, паузу и перезагрузку)

04-15 17:41:47.903: D/ACTIVITY(376): Select Mode Activity onPause 
04-15 17:41:47.953: D/ACTIVITY(376): OSM Activity onCreate 
04-15 17:41:48.043: D/ACTIVITY(376): OSM Activity onStart 
04-15 17:41:48.063: D/ACTIVITY(376): OSM Activity onResume 
04-15 17:41:49.394: D/ACTIVITY(376): Select Mode Activity onStop 
04-15 17:42:04.213: D/ACTIVITY(376): OSM Activity onPause 
04-15 17:42:04.763: D/ACTIVITY(376): OSM Activity onStop 
04-15 17:43:00.483: D/ACTIVITY(376): OSM Activity onStart 
04-15 17:43:00.533: D/ACTIVITY(376): OSM Activity onResume 
04-15 17:43:20.683: D/ACTIVITY(376): OSM Activity onPause 
04-15 17:43:20.723: D/ACTIVITY(376): Google Activity onCreate 
04-15 17:43:20.853: D/ACTIVITY(376): Google Activity onStart 
04-15 17:43:20.873: D/ACTIVITY(376): Google Activity onResume 
04-15 17:43:21.307: D/ACTIVITY(376): OSM Activity onStop 
04-15 17:43:40.833: D/ACTIVITY(376): Google Activity onPause 
04-15 17:43:41.403: D/ACTIVITY(376): Google Activity onStop 
+0

Вы уверены, что OnStop вызывается после того, как приложение невидимо? потому что я распечатываю все состояния своей деятельности, и я вижу, что только ядро ​​OnResume вызывается, когда я нажимаю кнопку «домой». OnStop вызывается только в том случае, если я запускаю другое приложение (после нажатия кнопки «домой»). –

+0

Да, я уверен, отредактировал мой пост, чтобы включить мой журнал всех методов on ..() в своих действиях. Это в эмуляторе и на моем телефоне. – NickT

+0

Это странно. Я запускаю свой телефон и эмулятор (2.3), а OnStop не вызывается после нажатия кнопки «домой». Возможно, я попробую другую версию ОС. –

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