English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Análise de uso de classes anônimas internas e funções de callback em Android

Este exemplo ilustra o uso de classe interna anônima e função de chamada de volta na programação Android. Compartilho com vocês para referência, conforme detalhado a seguir:

Nós, desenvolvedores de Android, usamos frequentemente classes internas anônimas e suas funções de chamada de volta, por exemplo, quando configuramos um ouvinte de clique para um Botão, geralmente devemos implementar a interface OnCLickListener e overrides o método Onclick(), isso é classe interna anônima e função de chamada de volta, então, quanto você entende sobre a classe interna anônima e a função de chamada de volta do Java? Este documento oferece uma explicação detalhada.

Primeiro, deve-se saber que a classe interna é uma parte principal do Java. A classe interna pode estar em qualquer posição dentro de uma classe, pode estar no mesmo nível que as variáveis de instância, ou dentro de um método, até mesmo uma parte de uma expressão. As classes internas do Java, dividem-se em classes internas de membros, classes internas locais e classes internas anônimas, vamos falar sobre a classe interna anônima.

A. Sobre a função de chamada de volta

Classe interna anônima usada na função de chamada de volta, o que é função de chamada de volta?

O que se chama de chamada de volta é quando o programa cliente C chama uma função A do programa de serviço S, e então o S chama de volta uma função B do C em algum momento, para o C, essa B é chamada de função de chamada de volta. Por exemplo, no Win32A função de processo de janela inferior é uma função de chamada de volta típica. Geralmente, o C não chama o B, o propósito do C de fornecer o B é permitir que o S o chame, e é algo que o C não pode evitar fornecer. Como o S não sabe o nome do B fornecido pelo C, o S concorda com a especificação da interface do B (protótipo da função), e então o C avisa o S com antecedência através de uma função R que ele usará a função B, este processo é chamado de registro de função de chamada de volta, e R é chamado de função de registro. O Web Service e o RMI do Java usam o mecanismo de chamada de volta, que pode acessar programas de servidor remoto. Abaixo está um exemplo para explicar:

O programador A escreveu um programa (programa a), onde foi reservado um interface de função de chamada de volta, e o programa foi encapsulado. O programador B quer que o a chame seu programa b em um método, então ele chama o método b do seu próprio b através do interface do a. O objetivo foi alcançado. Em C/C++Dentro, é necessário usar a função de chamada de volta, a função chamada precisa informar o endereço do ponteiro ao chamador, mas no JAVA não há ponteiros, o que fazer? Podemos implementar a definição da função de chamada de volta através da interface (interface).

Supondo que eu seja o programador A, aqui está meu programa a:

public class Caller
{
  public MyCallInterface mc;
  public void setCallfuc(MyCallInterface mc)
  {
    this.mc= mc;
  }
  public void call(){
    this.mc.method();
  }
}

Eu ainda preciso definir uma interface, para que o programador B possa escrever o programa com base na minha definição para implementar a interface.

public interface MyCallInterface
{
  public void method();
}

Portanto, o programador B só precisa implementar essa interface para alcançar o objetivo de chamada de volta:

public class B implements MyCallInterface
{
  public void method()
  {
    System.out.println("Chamada de volta");
  }
  public static void main(String args[])
  {
    Caller call = new Caller();
    call.setCallfuc(new B());
    call.call();
  }
}

B. Sobre a classe interna anônima

Para entender o que é uma classe interna, o papel da classe interna, a polimorfia do Java, o que é uma função de chamada de volta. Existem muitas explicações detalhadas na internet, apenas uma explicação simples foi feita para simplificar. A classe interna anônima é passada como parâmetro para o método, dentro deste método, será usado o tipo de interface para aceitar a classe anônima passada, e então será chamado seu método, isso é polimorfismo. A verdadeira razão é que foi implementado um chamada de volta. Porque ele chama o método da sua classe interna anônima. O código a seguir foi digitado à mão e não foi testado apenas para demonstração.

interface InterfaceA{
   String go();
}
class Test{
   public void prtGo(InterfaceA ia){
     System.out.println(ia.o());
   }
  public static void main(String []args){
     Test t = new Test();
     t.prtGo(new InterfaceA(){
       public String go(){
         return"go";
       }
     });
   }
}

Leitores interessados em mais conteúdo sobre Android podem consultar as seções especiais deste site: 'Tutorial de Entrada e Avançado de Desenvolvimento Android', 'Técnicas de Depuração e Solução de Problemas Comuns em Android', 'Técnicas de Manipulação de Multimídia em Android (áudio, vídeo, gravação, etc.)', 'Resumo de Uso dos Componentes Básicos em Android', 'Resumo de Técnicas de View em Android', 'Resumo de Técnicas de Layout em Android' e 'Resumo de Uso dos Controles em Android'.

Espero que o conteúdo deste artigo ajude a todos a programar em Android.

Declaração: O conteúdo deste artigo é extraído da Internet, pertence ao autor original, foi submetido e carregado voluntariamente pelos usuários da Internet. Este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidades legais relacionadas. Se você encontrar conteúdo suspeito de infringir direitos autorais, por favor, envie e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @) para denunciar, e forneça provas relevantes. Em caso de verificação, o site deletará imediatamente o conteúdo suspeito de infringir direitos autorais.

Você também pode gostar