2010-04-02 9 views
14

In Android-Anwendungsentwicklung, gehe ich häufig durch das Wort CallBack an vielen Stellen. Ich möchte wissen, was es bedeutet, uns technisch zu sagen - und wie ich es schaffen kann, die callback in Anwendungen zu verwenden. Ich brauche einen Leitfaden, um es zu verstehen und zu benutzen.Rückruf in Android?

Antwort

13

ich möchte wissen, was es bedeutet, sagen uns technisch

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

„In der objektorientierten Programmiersprachen ohne Funktion bewertet Argumente, wie Java, [Rückrufe] können B. simuliert werden, indem eine abstrakte Klasse oder Schnittstelle übergeben wird, von denen der Empfänger eine oder mehrere Methoden aufruft, während das aufrufende Ende eine konkrete Implementierung bereitstellt.Solche Objekte sind effektiv ein Bündel von Rückrufen plus die Daten, die sie manipulieren müssen bei der Umsetzung verschiedener Designs Muster wie Besucher, Beobachter und Strategie. "

, wie ich den Rückruf der

Anwendungen verwalten Ich habe keine Ahnung, was das bedeutet.

+0

Entschuldigung für meine schlechteste Englisch wieder mark.Anyway haben Sie die richtige. – Praveen

+0

Klare Erklärung –

5

Hmm. Wie wäre es mit einem Beispiel? Sie schreiben einen Quicksort-Algorithmus in C. Der Benutzer, der Ihren Algorithmus verwenden möchte, muss eine Vergleichsmethode bereitstellen, die für das geeignet ist, was der Benutzer mit Ihrem Algorithmus sortiert. Der Benutzer muss einen Funktionszeiger an die Vergleichsmethode des Benutzers an Ihren Quicksort-Code übergeben. Der Quicksort-Code verwendet diese Adresse, den Funktionszeiger, zum Zurückrufen an die Vergleichsfunktion des Benutzers. Sie stellen einen Funktionsprototyp, keine Implementierung zur Verfügung, da Sie nicht wissen können, wie die Ordinalitat des Sortierten zu bestimmen ist. Der Benutzer liefert die Implementierung von compare, die für das, was der Benutzer sortiert, sinnvoll ist. Diese Implementierung muss mit dem Funktionsprototyp übereinstimmen. Der Funktionszeiger wird vom Quicksort-Algorithmus verwendet, um den Code des Benutzers zu erreichen und ihn zu berühren.

Dies ist eigentlich über Polymorphie.

In Java können Sie hierfür eine Schnittstelle verwenden. Zum Sortieren siehe die Schnittstelle IComparer und IComparable.

5

Eine Callable-Schnittstelle kann verwendet werden, um einen Code als Runnable auszuführen. Callable kann jedoch das Ergebnis zurückgeben und eine Exception auslösen.

Für weitere Details. http://developer.android.com/reference/java/util/concurrent/Callable.html

Mithilfe von Callable-Schnittstellen können Sie ein Argument als Funktion übergeben Ich fügte ein einfaches Code-Snippet für das Verständnis.

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(); 

    } 

} 
Verwandte Themen