Comunicação entre Serviço e Atividade no Android

Quais são as maneiras de se comunicar entre uma atividade e um serviço no android?

Hoje aprendi a me comunicar enviando uma Intenção de Atividade e respondendo de volta usando o BroadcastRecevier.

Quais são minhas outras opções? Alguém tem um tutorial / referência sobre isso?

Resposta a esta pergunta é:

Existem várias maneiras de uma atividade se comunicar com um serviço e vice-versa. Esta seção discute as diferentes maneiras e fornece recomendações sobre quais usar.

5.1. Ligação de atividade ao serviço local Se o Serviço for iniciado no mesmo processo que a Atividade, a Atividade poderá se vincular diretamente ao serviço. Esta é uma maneira relativamente simples e eficiente de comunicação.

5.2. Usando o receptor Você também pode usar receptores registrados dinamicamente para a comunicação. Por exemplo, sua atividade pode registrar dinamicamente um receptor e o serviço envia os eventos correspondentes.

5.3. AIDL para serviços em um processo diferente Para vincular-se a um serviço que é executado em um processo diferente, é necessário usar o Inter Process Communication (IPC), pois os dados precisam ser enviados entre diferentes processos. Para isso, você precisa criar um arquivo AIDL que seja semelhante a uma interface Java, mas termine com a extensão de arquivo .aidl e tenha permissão apenas para estender outros arquivos AIDL.

Essa abordagem é necessária se o seu serviço deve ser fornecido a outros aplicativos, caso contrário, você deve preferir um serviço local.

5.4. Enviando dados de intenção e agrupados aos serviços O serviço recebe dados do componente Android inicial e pode usar esses dados.

5.5. Manipulador e Mensageiro Se o serviço deve estar se comunicando de volta para a atividade, ele pode receber um objeto do tipo Messenger por meio dos dados da Intenção recebidos da Atividade. Se o Messenger estiver vinculado a um manipulador na atividade, o serviço poderá enviar objetos do tipo Mensagem para a atividade.

Um Messenger é parcelável, o que significa que ele pode ser passado para outro processo e você pode usar esse objeto para enviar mensagens para o manipulador na atividade.

O Messenger também fornece o método getBinder () que permite passar um Messenger para a atividade. A atividade pode, portanto, enviar mensagens para o serviço.

Graças ahttp://www.vogella.com/articles/AndroidServices/article.html