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

у меня есть Activity (A) и Service (S), который запускается следующим образом:

Intent i = new Intent();
i.putExtra("updateInterval", 10);
i.setClassName("com.blah", "com.blah.S");
startService(i);

A имеют такую функцию, как эта в A:

public void someInfoArrived(Info i){...}

теперь я хочу вызвать A. someInfoArrived (i) изнутри S. Намерение.putExtra не имеет версии, где я мог бы передать ссылку на объект и т. д... Пожалуйста, помогите!

PS: наоборот (опрос S для новой информации) - это не то, что мне нужно. Я нашел достаточно информации о том, как это сделать.

1 ответов


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

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