Durante o Google IO mais recente, houve uma apresentação sobre a implementação de aplicativos clientes tranqüilos. Infelizmente, foi apenas uma discussão de alto nível sem código-fonte da implementação.
Neste diagrama, no caminho de retorno, existem vários retornos de chamada diferentes para outros métodos.
Como declaro quais são esses métodos?
Entendo a ideia de um retorno de chamada - um pedaço de código que é chamado após um determinado evento, mas não sei como implementá-lo. A única maneira de implementar os retornos de chamada até agora foi substituir vários métodos (onActivityResult, por exemplo).
Sinto que tenho um entendimento básico do padrão de design, mas continuo me enganando sobre como lidar com o caminho de retorno.
Respostas:
Em muitos casos, você tem uma interface e transmite um objeto que a implementa. Diálogos, por exemplo, têm o OnClickListener.
Apenas como um exemplo aleatório:
Eu provavelmente estraguei a sintaxe da opção 2. É cedo.
fonte
Quando algo acontece em minha opinião, aciono um evento que minha atividade está ouvindo:
// DECLARADO NA VISTA (PERSONALIZADA)
// DECLARADO EM ATIVIDADE
Se você quiser saber mais sobre comunicação (retornos de chamada) entre fragmentos, consulte aqui: http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
fonte
Não há necessidade de definir uma nova interface quando você pode usar um já existente:
android.os.Handler.Callback
. Passe um objeto do tipo Chamada de retorno e invoque as chamadas de retornohandleMessage(Message msg)
.fonte
Exemplo para implementar o método de retorno de chamada usando a interface
Defina a interface, NewInterface.java .
pacote javaapplication1;
Crie uma nova classe, NewClass.java . Ele chamará o método de retorno de chamada na classe principal.
A classe principal, JavaApplication1.java, para implementar a interface NewInterface - callback () method. Ele criará e chamará o objeto NewClass. Em seguida, o objeto NewClass retornará o método callback () por sua vez.
fonte
para esclarecer um pouco a resposta do dragão (já que levei um tempo para descobrir o que fazer
Handler.Callback
):Handler
pode ser usado para executar retornos de chamada no segmento atual ou outro, passandoMessage
s. osMessage
dados de retenção a serem usados no retorno de chamada. umHandler.Callback
pode ser passado para o construtor deHandler
, a fim de evitar estender o Handler diretamente. portanto, para executar algum código via retorno de chamada do thread atual:EDIT: acabei de perceber que existe uma maneira melhor de obter o mesmo resultado (menos controle sobre exatamente quando executar o retorno de chamada):
fonte
Callback
versão melhor, porque você pode não necessariamente ter acesso aos dados necessáriosRunnable.run()
no momento em que você construí-loVocê também pode usar
LocalBroadcast
para esse fim. Aqui está uma rápidaCrie um receptor de transmissão:
É assim que você pode acioná-lo
cancele o registro do receptor no onPause:
fonte