В 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
здесь.