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