Подтвердить что ты не робот

Обратный вызов в android?

В разработке приложений для Android я часто повторяю слово CallBack во многих местах. Я хочу знать, что это значит сказать нам технически - и как я могу использовать CallBack в приложениях. Мне нужно руководство, чтобы понять его и использовать.

4b9b3361

Ответ 1

Я хочу знать, хочу это значит сказать нас технически

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

"В объектно-ориентированных языках программирования без функциональнозначных аргументов, таких как Java, [обратные вызовы] можно моделировать, передавая абстрактный класс или интерфейс, из которых получатель будет вызывать один или несколько методов, в то время как вызывающий конкретная реализация.Такие объекты фактически представляют собой набор обратных вызовов, а также данные, которые им нужно манипулировать. Они полезны при реализации различных шаблонов проектирования, таких как Visitor, Observer и Strategy".

как я могу управлять обратным вызовом приложения

Я понятия не имею, что это значит.

Ответ 2

Хм. Как насчет примера. Вы пишете алгоритм быстрой сортировки в C. Пользователь, который хочет использовать ваш алгоритм, должен предоставить метод сравнения, подходящий для того, что пользователь сортирует с вашим алгоритмом. Пользователь должен передать указатель на метод сравнения пользователей с вашим кодом быстрой сортировки. Код quicksort использует этот адрес, указатель функции, для вызова функции CALL BACK для пользователя. Вы предоставляете прототип функции, никакой реализации, поскольку вы не можете знать, как определить обыденность того, что сортируется. Пользователь поставляет реализацию сравнения, которая имеет смысл для того, что пользователь сортирует. Эта реализация должна соответствовать прототипу функции. Указатель функции используется агоризонизмом quicksort, чтобы вернуться назад и коснуться кода пользователя.

Это фактически о полиморфизме.

В java вы можете использовать интерфейс для этого. Поэтому для сортировки см. Интерфейс IComparer и IComparable.

Ответ 3

Азвольный интерфейс может использоваться для запуска фрагмента кода, как это делает Runnable. Тем не менее, Callable может вернуть результат и может выставить проверенное исключение.

Подробнее. http://developer.android.com/reference/java/util/concurrent/Callable.html

Используя интерфейсы Callable, вы можете передать аргумент как функцию, я добавил простой фрагмент кода для понимания.

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

    }

}