Как сервис Android взаимодействует с активностью - PullRequest
3 голосов
/ 24 февраля 2012

Я разрабатываю приложение для метро, ​​при достижении новой станции появляется всплывающее уведомление, и карта, показанная в основном действии, обновляется.Я поместил код руководства в службу, чтобы пользователи могли запускать другие приложения во время навигации.Но основное действие необходимо обновить при достижении новой станции. Как служба может внести некоторые изменения в представление основного действия?

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

В своей деятельности вы должны зарегистрировать получателя

Сначала объявить получателя

public class ReceiverTest extends BroadcastReceiver
{
  @Override
  public void onReceive(Context context, Intent intent)
  {
     // extras from service
     int key = intent.getIntExtra("key", 0);

     //do things here
  }
}

Зарегистрировать его в OnCreate вашей деятельности

ReceiverTest mReceiver = new ReceiverTest();
IntentFilter filter;
filter = new IntentFilter("packagename.dosomething");
registerReceiver(mReceiver, filter);

Затем вк вашим услугам, транслируйте событие

Intent i = new Intent("packagename.dosomething");
// You could put the information in extras, then get the value in receiver
i.putExtra("key", 123);
context.sendBroadcast(i);
1 голос
/ 24 февраля 2012

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

0 голосов
/ 24 февраля 2012

Лучший способ обмена данными между Service S и Activity A

Используйте шаблон локальной привязки и привязайте Activity A к Service S, а затем вызовите открытый API службы для получения всего, что нужно.

Каким образом внешняя операция B может взаимодействовать со службой S, чтобы определить, завершена ли она со всей своей предварительной обработкой, и готова ли операция A к запуску?

Используйте шаблон удаленного связывания и AIDL. Деятельность B регистрирует AIDL-определенный обратный вызов в Сервисе S, который служба будет вызывать при необходимости. См. здесь и здесь для примера.

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