2010-04-02 30 views
14

W tworzeniu aplikacji dla Androida często przeglądam słowo CallBack w wielu miejscach. Chcę wiedzieć, co to znaczy powiedzieć nam technicznie - i jak udaje mi się korzystać z aplikacji callback. Potrzebuję przewodnika, aby go zrozumieć i go użyć.oddzwonienie w systemie Android?

Odpowiedz

13

chcę wiedzieć, co to znaczy, powiedz nam technicznie

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

„w językach programowania obiektowego bez argumentów funkcji o wartościach, takich jak Java, [callbacks] można być symulowane przez przekazanie abstrakcyjnej klasy lub interfejsu, z których odbiorca wywoła jedną lub więcej metod, podczas gdy wywołujący koniec zapewnia konkretną implementację, takie obiekty są efektywnie zbiorem wywołań zwrotnych oraz danymi, które muszą manipulować. w realizacji różnych projektów wzorce takie jak Visitor, Observer i Strategy. "

jak mogę zarządzać zwrotnego wniosków

nie mam pojęcia, co to znaczy.

+0

Przepraszam za moją najgorszą angielską ocenę ponownie. Za każdym razem zrobiłeś właściwy. – Praveen

+0

Jasne objaśnienie –

5

Hmm. A może przykład. Piszesz algorytm quicksort w C. Użytkownik, który chce użyć twojego algorytmu, musi dostarczyć metodę porównania odpowiednią do tego, co użytkownik sortuje za pomocą twojego algorytmu. Użytkownik musi przekazać wskaźnik funkcji do metody porównywania użytkownika do kodu Quicksort. Kod quicksort wykorzystuje ten adres, wskaźnik funkcji, do CALL BACK do funkcji porównywania użytkownika. Podajesz prototyp funkcji, bez implementacji, ponieważ nie możesz wiedzieć, jak określić porządek sortowania. Użytkownik dostarcza implementację porównania, która ma sens dla sortowania użytkownika. Ta implementacja musi być zgodna z prototypem funkcji. Wskaźnik funkcji jest wykorzystywany przez algorytm quicksort do sięgania wstecz i dotykania kodu użytkownika.

Tak naprawdę chodzi o polimorfizm.

W języku java można w tym celu użyć interfejsu. Więc do sortowania zobacz interfejs IComparer i IComparable.

5

Interfejs z opcją Callable może być użyty do uruchomienia fragmentu kodu w trybie Runable. Jednak Callable może zwrócić wynik i może rzucić zaznaczone wyjątek.

Aby uzyskać więcej informacji. http://developer.android.com/reference/java/util/concurrent/Callable.html

Korzystając z interfejsów, które można wywoływać, można przekazać argument jako funkcję dodałem prosty fragment kodu do zrozumienia.

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

    } 

}