2010-04-02 42 views
14

En el desarrollo de aplicaciones para Android, con frecuencia paso por la palabra CallBack en muchos lugares. Quiero saber qué significa decirnos técnicamente y cómo puedo usar el callback en las aplicaciones. Necesito una guía para entenderlo y usarlo.devolución de llamada en android?

Respuesta

13

quiero saber lo que significa, decirle nos técnicamente

http://en.wikipedia.org/wiki/Callback_%28computer_science%29

"En los lenguajes de programación orientados a objetos sin argumentos de la función de valor, tales como Java, [devoluciones de llamada] puede se simulará pasando una clase o interfaz abstracta, de la cual el receptor llamará a uno o más métodos, mientras que el extremo llamante proporciona una implementación concreta. Tales objetos son efectivamente un conjunto de devoluciones de llamada, más los datos que necesitan manipular. en la implementación de varios diseños patrones como Visitor, Observer y Strategy ".

cómo puedo gestionar la devolución de llamada de las aplicaciones

que no tienen idea de lo que esto significa.

+0

lo siento por mi peor Inglés otra vez mark.Todavía usted hizo la correcta. – Praveen

+0

Explicación clara –

5

Hmm. ¿Qué tal un ejemplo? Usted escribe un algoritmo de quicksort en C. El usuario que desea usar su algoritmo debe proporcionar un método de comparación apropiado para lo que el usuario está ordenando con su algoritmo. El usuario debe pasar un puntero de función al método de comparación del usuario al código de su quicksort. El código quicksort utiliza esta dirección, el puntero de función, para LLAMAR DE NUEVO a la función de comparación del usuario. Proporciona un prototipo de función, no implementación, ya que no puede saber cómo determinar la ordinalidad de lo que se está ordenando. El usuario proporciona la implementación de la comparación que tiene sentido para lo que el usuario está ordenando. Esta implementación debe coincidir con el prototipo de la función. El puntero de función es utilizado por el algoritmo de localización rápida para volver atrás y tocar el código del usuario.

Esto es realmente sobre polimorfismo.

En java, puede usar una interfaz para hacer esto. Por lo tanto, para ordenar, consulte la interfaz IComparer e IComparable.

5

Una interfaz que se puede llamar se puede utilizar para ejecutar un fragmento de código como lo hace Runnable. Sin embargo, Callable puede devolver el resultado y puede lanzar una excepción marcada.

Para obtener más información. http://developer.android.com/reference/java/util/concurrent/Callable.html

Al usar las interfaces invocables puede pasar un argumento como función. Agregué un fragmento de código simple para la comprensión.

public class MainActivity<V> extends Activity { 


    Callable<String> doLogin=null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     doLogin=new Callable<String>() { //created but not called now. 

      @Override 
      public String call() throws Exception { 

       //make some piece of code 
       return "something"; //or false 
      } 
     }; 

     CheckSession checkSession=new CheckSession("sessionName"); 
     String sessionKey=""; 


     try { //we are sending callable to the DAO or any class we want 
      sessionKey=checkSession.getSessionKey(doLogin); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 



public class CheckSession{ 


    String sessionName=""; 
    Callable<String> func=null; 

    public CheckSession(String sessionName) { 
     super(); 
     this.sessionName = sessionName; 

    } 

    public String getSessionKey(Callable<String> doLogin) throws Exception{ 

     func=doLogin; 

     return (String) func.call(); 

    } 

} 
Cuestiones relacionadas