Android - Обмен информацией о местоположении между действиями - PullRequest
3 голосов
/ 15 сентября 2011

Как лучше всего делиться информацией о местонахождении между видами деятельности?Например:

  • Activity1 (основной) отображает данные на основе текущего местоположения пользователя (шир. И долг.)
  • Activity2 отображает карту Google с данными рядом с текущим местоположением пользователя
  • Activity3 отображает события календаря рядом с текущим местоположением пользователя

Каждая активность будет вызывать определенный метод веб-сервиса, отправляя текущее местоположение.

Я спрашиваю это, потому что я запутался:

  • следует создать статическую ссылку на объект Location (получить местоположение пользователя в главном действии) и использовать этот объект в других действиях.
  • каждому действию нужно иметь собственную реализацию для полученияместоположение пользователя.

Спасибо

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

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

0 голосов
/ 16 сентября 2011

Довольно просто передавать информацию из одного вида деятельности в другой. Когда вы создаете намерение, которое используете для запуска другого действия, вы можете прикрепить дополнительную информацию к этому намерению, к которому у нового действия есть доступ при запуске.

Вот пример:

Для передачи информации из одного занятия в другое вы можете сделать:

Intent i = new Intent(this, OtherActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("variableName", "variable value");

Тогда в другой игре вы сделаете следующее

Bundle extras = this.getIntent().getExtras(); 
String var = null;

if (extras != null) {
    var = extras.getString("variableName");
}

Вы можете передавать не только строки, целые и т. Д. ... вы даже можете передавать объекты. Объекты, являющиеся потомками класса Parcelable, также могут быть переданы. Чтобы добавить посылку к цели просто:

i.putExtra("variableName", instanceOfMyClass);

В новом занятии вы просто позвоните:

MyClass obj = (MyClass) extras.getParcelableExtra("parcelableName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...