Если передавать нужно просто примитивный тип, то достаточно
LocalBroadcastManager. Сервис инициирует
sendBroadcast(), а Activity регистрируется на получение с помощью
registerReceiver(). Ну, и не забыть при закрытии Activity
отписаться. При этом сами данные отправляете в экстра-данных Intent. Это очень удобно, т.к. не нужны никакие зависимости между Activity и сервисом.
Если же надо отправлять объекты, то уже надо использовать
Observer. Можно, конечно, использовать первый вариант с Parcelable, что также снизит зависимость кода, но для меня реализация Observer проще. В общем, надо выбирать из условий проекта.