Я хочу понять концепцию обратного вызова. Я искал в Интернете информацию об обратных вызовах, и есть много примеров использования интерфейса, и один класс вызывает метод другого класса, используя этот интерфейс. Но я все еще не могу понять основную концепцию обратных вызовов, какова цель использования обратных вызовов?
Переведено автоматически
Ответ 1
Вот хороший учебник, в котором хорошо описаны обратные вызовы и варианты использования.
Концепция обратных вызовов заключается в том, чтобы информировать класс синхронно / асинхронно о выполнении какой-либо работы в другом классе. Некоторые называют это голливудским принципом: "Не звоните нам, мы позвоним вам".
Класс A вызывает класс B для выполнения некоторой работы в потоке. Если поток завершил работу, он проинформирует класс A об обратном вызове и предоставит результаты. Таким образом, нет необходимости в опросе или чем-то еще. Вы получите результаты, как только они станут доступны.
В Android используются обратные вызовы, например, между действиями и фрагментами. Поскольку фрагменты должны быть модульными, вы можете определить обратный вызов во фрагменте для вызова методов в действии.
Ответ 2
Сначала вы создаете интерфейс, затем определяете метод, который будет выполнять функцию обратного вызова. В этом примере у нас будет два класса, один ClassA и другой ClassB
Интерфейс:
publicinterfaceOnCustomEventListener{ publicvoidonEvent(); //method, which can have parameters }
сам прослушиватель в ClassB (мы только устанавливаем прослушиватель в ClassB)
private OnCustomEventListener mListener; //listener field
//setting the listener publicvoidsetCustomEventListener(OnCustomEventListener eventListener) { this.mListener=eventListener; }
в ClassA, как мы начинаем прослушивать все, что ClassB должен сообщить
classB.setCustomEventListener(newOnCustomEventListener(){ publicvoidonEvent(){ //do whatever you want to do when the event is performed. } });
как нам вызвать событие из ClassB (например, при нажатии кнопки)