2013-05-19 3 views
7

Я только что закончил учебник по геообстановке на Android (http://developer.android.com/training/location/geofencing.html), и мне интересно, почему «обратный вызов» для геообъектов выполняется в ожидании намерений, а не в простом интерфейсе обратного вызова.Android - Зачем использовать ожидающие намерения для геообъектов

В любом случае, как правило, обычно отключается клиент местоположения в onPause(), поэтому ранее добавленные геозоны не будут отслеживаться после того, как приложение приостановлено/было уничтожено, поэтому почему ожидающее намерения? Или я ошибаюсь здесь?

ответ

18

Интересно, почему «обратный вызов» для геообъектов выполняется через ожидающие намерения, а не простой интерфейс обратного вызова.

Главным образом потому, что геофоны предназначены для работы даже без приложения.

При реализации в деятельности, один, как правило, отключать клиент местоположения в OnPause() в любом случае, так что ранее добавленный геозон не будет отслеживаться либо после того, как приложение Приостановлено/было разрушено, так почему ожидающее намерение? Или я ошибаюсь здесь?

Я считаю, что вы ошибаетесь здесь. На самом деле, геозон специально не предназначены для непосредственного запуска пользовательского интерфейса, как обсуждается в the documentation:

Намерение отправлено из Location Services может вызвать различные действия в вашем приложении, но вы не должны его начать деятельность или фрагмент , потому что компоненты должны появляться только в ответ на действие пользователя.

Теперь вы можете сказать, что хотите использовать только геозоны, пока у вас есть активность на переднем плане. Однако вам нужно будет удалить эти геозоны в onPause(). Геозонность будет оставаться зарегистрированной до истечения срока ее действия или вручную удалена AFAICT.

+0

Да, вы сказали, что абсолютно правильно - я только что попробовал :) – Flo

+2

В моем тестировании образец кода от Google прекратил работать, если мое приложение было убито. Поэтому я переключился на широковещательный приемник вместо IntentService, а затем фоновый мониторинг работал так, как ожидалось. http://stackoverflow.com/questions/19505614/android-geofence-eventually-stop-getting-transition-intents/19521823#19521823 –

1

Этот ответ может быть устаревшим - точность и надежность сервисов Google Play сильно изменились с момента его первоначального выпуска.

Некоторые из моих опытов с геопостановкой ниже. Прежде всего - основное преимущество этой технологии - ОЧЕНЬ низкая потребляемая батарея. В этом случае я не могу заметить никаких изменений в работе от батареи. Это действительно впечатляет. Служба, похоже, использует только Wi-Fi и сетевое расположение. Я вообще не заметил, что GPS работает. Я не могу сказать, что это только скрытый значок местоположения или действительно не использующий GPS. Точность - это ужасно. 20 областей круга вообще не обнаружены, кроме диапазона моего домашнего ап. Он выглядит как целая полоса положения, в том числе ошибка должна быть внутри огороженной области. Иногда обнаруживаются области 1000 м и с большой задержкой. Те эксперименты, которые сделаны в открытой местности с очень низким числом Wi-Fi ap вокруг. Я все еще пытаюсь найти действительно надежные настройки для этой службы. После получения намерений я хочу включить GPS-местоположение и сделать окончательный подход в своем собственном коде.

+0

Что такое «огромная латентность», как в вашем опыте? – Ewoks

+0

Привет - Как я писал в своем ответе - многое изменилось - латентность намного меньше.В типичной городской местности он работает очень хорошо. – piotrpo

+0

Что такое «намного меньше»? 1 сек, 1 мин, 1 час? – Ewoks