2016-09-14 2 views
1

В действии A у меня есть 2 фрагмента, от A1 и A2, пользователь может получить доступ к Activity B и Activity C. Моя проблема заключается в том, что для активности B и C требуется информация о местоположении (например, Lat, lng). Как я могу достичь этого без огромного отставания в обычном графическом интерфейсе?Android делает каждое действие информацией о местоположении?

У меня есть 2 неудачный план:

  1. Непосредственно Используйте, чтобы получить местоположение, передавать значения А1 и А2, и, наконец, перейти на B и C. Если пользователь находится внутри помещения, информация о местоположении, будет принимать в то время получать. Что делать, если пользователь имеет доступ к B и C без информации о местоположении?

  2. Используйте услугу. Тем не менее, мне не нужна идентификация местоположения в течение длительного времени, также даже служба может отправлять широковещательные сообщения всем, может ли B и C получать широковещательное сообщение до их onCreate()? Кроме того, трансляция занимает некоторое время, чтобы получать, что может существенно повлиять на инициализацию.

ответ

1

Эй у вас есть много вариантов на самом деле

  • Создать Bound службу с GoogleApiClient в нем. Привяжите эту службу к действиям, которые вам нужны, и получите данные в них.
  • Используйте автобус события. Создайте класс с помощью GoogleApiClient, чтобы получить местоположение, а затем просто найдите данные в действиях/фрагментах, которые вам нужны.
  • Используйте Dagger2, чтобы ввести GoogleApiClient @module для действий/фрагментов, которые вам нужны.

Надеется, что я помог тебе;)

+0

Это очень полезно! Спасибо огромное! У меня есть еще один вопрос, в этих трех вариантах, какой из них самый быстрый? Так как мне нужно нарисовать интерфейс, основанный на нем. – LunarS

+0

Я предпочитаю работать с Сервисом. Поскольку события нестабильны, я имею в виду, что любой класс с приемниками может получать данные, поэтому вы не можете быть уверены, что получили его там, где хотите. Сервис довольно прост: никаких дополнительных библиотек, вы можете запускать его даже тогда, когда приложение скрыто и т. Д. Поэтому я рекомендую вам его использовать. Надеюсь, что это помогло) –

+0

@ LunarS https://gist.github.com/bryanl/4337357 посмотрите на пример –

0

Рассмотрите эту схему реализации шаблона события. Единственное, что вам следует рассмотреть, это передать исполнитель потока пользовательских интерфейсов.

http://square.github.io/otto/

+0

Это очень похоже на вещание, является его быстрее, чем радиовещательным приемник? Для приема широковещательного приемника может потребоваться много времени. – LunarS

+0

Кроме того, активность не инициализируется получать сообщения после onCreate? – LunarS

+0

В библиотеке используется отражение, чтобы напрямую ссылаться на ваши подписанные методы, поэтому он будет намного быстрее, поскольку широковещательные передачи обрабатываются ОС Android, поэтому они выглядят медленными. Существует специальная аннотация @Provide, которая предназначена для уведомления недавно подписанных компонентов. –