Galera to em um dilema e preciso da ajuda de vc’s, estou precisando fazer um service startar uma dialog independente da tela que ela esteja, porem não estou conseguindo já tentei um monte de coisa e não deu certo… eu sei que serviços não foram feitos para interagir com views mais esse é um caso especial no qual preciso notifica o usuario sobre um resultado especifico que o service achar e abrir essa dialog solicitando outra tela por isso tem que ser a dialog.
O principal é saber se essa Dialog poderá aparecer enquanto sua activity não estiver na tela.
Caso sim, uma solução que vejo é criar um Broadcast receiver que recebe um broadcast do service, dele é criado uma activity e por sua vez a ativity lança a Dialog.
Caso contrário, você pode implementar um Messenger.
Então o fluxo é o seguinte: vai ter um serviço rodando coletando informações em segundo plano enquanto o usuário trabalha na aplicação, em uma determinada circunstancia se o gps por exemplo for desligado é exibida uma pop-up ao usuário informando que o gps está desativado e quando o usuário confirmar automaticamente é aberta a tela de configuração de gps, por isso precisa ser uma dialog, só que isso vai ser independente dá activity que o usuário está. Quando eu tento abrir uma dialog com o contexto da aplicação dá erro. o que seria esse Messeger?
Então, a Dialog precisa de Contexto de uma Activity para ser exibido… apenas notificações tipo toast e aquela da barrinha superior funcionam por contexto da aplicação (esqueci o nome técnico).
Messenger é um padrão de comunicação do android que utiliza um handler como “endereço” para enviar as mensagens, é meio chatinho de implementar mas muito eficiente, pricipalmente para comunicação Activity <-> Service.
Moar infos : http://developer.android.com/reference/android/os/Messenger.html
Possível solução que vejo após ler …
Criar um Broadcast receiver que recebe um broadcast do service, desse broadcast é iniciado uma activity SEM UI (sem utilizar o setContentView), desta activity disparar a Dialog e ao fechar finalizar o a activity e voltar foco para a anterior.
é uma solução teórica, pode ser que não dê certo também.