Расположение с таймаутом - PullRequest
2 голосов
/ 12 апреля 2011

Нам понадобился сервис определения местоположения для нашего приложения, доступный из любого места.Мы использовали s singletone с контекстом приложения для системных служб и т. Д., И у нас есть два основных метода start и stop , которые прослушивают поставщиков местоположения и прекращают прослушивание соответственно.

Мыесть метод getLastLocation, который возвращает текущее наиболее обновленное и точное местоположение, которое мы могли найти.

У нас есть другой метод, который вызывает у меня головную боль: -)

Местоположение getLocationWithWait (Класс c), который должен получитьместоположение, если оно доступно, если нет, то оно вернет ноль и создаст таймер на 45 секунд. если прошло 45 секунд, и местоположение не было найдено, таймер передаст класс, указанный в параметре «нет местоположения»,в противном случае, если будут вызваны обратные вызовы местоположения, они отменит таймер и отправит широковещательную рассылку «местоположение найдено» классу в параметре.Итак, вот мои вопросы:

  1. я начал думать, что вся архитектура здесь неправильная, есть ли лучший способ реализовать службу определения местоположения для обслуживания ЛЮБОЙ активности в моем приложении?
  2. я использовалТаймер, а не Обработчик, так как используемый мной синглет НЕ является активностью, поэтому у меня нет Looper, поэтому создание потока с помощью Looper выглядит для меня так же плохо, как и создание другого потока для таймера ... Я хотел вместо этого использовать Activity,но потом ... если действие приостанавливается и возобновляется, мне нужно отслеживать оставшееся время таймера.
  3. трансляции также могут быть проблемой, поскольку, если активность приостанавливается, она пропускает трансляцию, а затем мне нужнодля отслеживания в моем синглтоне после нескольких состояний StickyBroadcast может решить эту проблему, но эту проблему я не могу отправить конкретному классу, а только всей системе.

Так что, наконец, будет какое-то преимуществоэто класс Сервис? (если честно, я подумал, может быть, об одном преимуществе, но не очень), я хочу услугу определения местоположения с ТимомЭто очень похоже на то, что делает Google в «Мое местоположение» на картах.

10x.

1 Ответ

0 голосов
/ 12 апреля 2011

Не лучше ли использовать LocationListener , как описано в Запрос обновлений местоположения ?

Затем можно использовать 'FastFix' в onResume ()

Не зная немного больше о ваших требованиях, трудно сделать более конкретные предложения.

Надеюсь, это поможет,

Фил Лелло

...