В Android: как вызвать функцию действия от сервиса?

У меня есть Действие (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 для новой информации) не то, в чем я нуждаюсь. Я нашел достаточно информации о том, как сделать это.

7
задан nex 16 May 2010 в 13:16
поделиться

1 ответ

Один из вариантов - переключиться с startService () на bindService () и использовать шаблон локальной привязки. Затем вам нужно, чтобы A в какой-то момент вызвал метод на S, чтобы зарегистрировать прослушиватель или метод обратного вызова. Тогда у S будет что-то, что он может вызвать к A, когда поступит некоторая информация. Вы можете увидеть образец проекта для этого здесь .

В качестве альтернативы, вы можете оставить startService () на месте и использовать широковещательную Intent , чтобы позволить S сообщать A о поступлении некоторой информации. Вы можете увидеть пример проекта, демонстрирующего такую ​​трансляцию Intent здесь .

14
ответ дан 6 December 2019 в 15:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: