Задать вопрос

Какие есть способы обмена данными activity-service?

Всем привет.
Не так давно пишу под android.
Правильно я понимаю, что обмен данными между activity и service осуществляется:
-из activity в service binding'ом
-в activity из service broadcastreciver'ом

Эти способы я использовал, все хорошо, все работает. Но ничего ли я не упустил? Есть еще какие-либо способы?
  • Вопрос задан
  • 3625 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@bimeg
1) Если сервис в том же процессе, то можно общаться на уровне инстансов. При биндинге активити получает ссылку на инстанс сервиса и дальше обычная жава.
2) Если сервис в другом процессе, то:
2.1) мессенжеры - при биндинге сервис и активити обмениваются мессенжерами и общаются.
2.2) AIDL - хитрая обертка над транзакциями через биндеры, по сути тоже биндинг, но, в отличие от мессенжеров, приближен к простому вызову методов.

Все способы выше работают в обе стороны.

Если биндинг не устраивает, то броадкастами.
Причем, если общающиеся в одном процессе, то лучше использовать LocalBroadcastManager, чтобы избежать всяческих дыр в безопасности.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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