У меня есть Действие (A) и Сервис (S), который начинает подобным это:
Intent i = new Intent();
i.putExtra("updateInterval", 10);
i.setClassName("com.blah", "com.blah.S");
startService(i);
Функции как этот в A:
public void someInfoArrived(Info i){...}
Теперь я хочу назвать A.someInfoArrived (i) из S. Intent.putExtra не имеет никакой версии, куда я мог передать Ссылку на объект и т.д... Помогите!
PS: наоборот (Опрос S для новой информации) не то, в чем я нуждаюсь. Я нашел достаточно информации о том, как сделать это.
Один из вариантов - переключиться с startService ()
на bindService ()
и использовать шаблон локальной привязки. Затем вам нужно, чтобы A в какой-то момент вызвал метод на S, чтобы зарегистрировать прослушиватель или метод обратного вызова. Тогда у S будет что-то, что он может вызвать к A, когда поступит некоторая информация. Вы можете увидеть образец проекта для этого здесь .
В качестве альтернативы, вы можете оставить startService ()
на месте и использовать широковещательную Intent
, чтобы позволить S сообщать A о поступлении некоторой информации. Вы можете увидеть пример проекта, демонстрирующего такую трансляцию Intent
здесь .