Событием может быть что угодно, например, прикосновение к экрану телефона, нажатие кнопки, нажатие клавиши, потеря соединения и т. Д. c.
И обратный вызов является ответом на эти события
В программировании, управляемом событиями, мы получаем метод обратного вызова, который вызывается, когда происходит какое-то событие.
Управляемое событием программирование обычно реализуется с помощью шаблона проектирования, называемого шаблоном наблюдателя.
Обратные вызовы в основном реализуются путем реализации интерфейса наблюдателем, вызывающим объект, вызывающий событие. методы обратного вызова для наблюдателя при каждом событии, и эти методы наверняка определены наблюдателем, поскольку он реализует этот интерфейс, интерфейс является своего рода контрактом между объектом, управляющим событиями, и наблюдателем (эй, наблюдатель, я даю вам обратный вызов, только если вы реализуете этот интерфейс)
В вашем коде этот интерфейс
interface OnGeekEventListener {
// this can be any type of method
void onGeekEvent();
}
onGeekEvent();
будет вызываться для объектов наблюдения, когда происходит событие.
В выше код класс B является субъектом / производителем , когда вы вызываете метод ниже для экземпляра класса B passin g ваш объект, такой как classBobj.registerOnGeekEvent(classAobj)
it , регистрирует вас как слушателя / наблюдателя / потребителя, и помещает ваш объект в переменную-член mListener, теперь, когда происходит событие, он может вызывать метод onGeekEvent()
для этого объекта.
public void registerOnGeekEventListener(OnGeekEventListener mListener)
{
this.mListener = mListener;
}
Синхронный обратный вызов , когда код внутри этих методов выполняется так же, из которого объект события вызывает их, он является синхронным.
Таким образом, если код вызывается в одном и том же потоке, вы не можете выполнить два параллельных события, потому что поток один и тот же, поэтому пишется «до выполнения lastcallback»
пример -> как будто у вас есть только один ребенок, и вы отправляете его брать воду, затем вы можете отправить его брать пищу, пока он не вернется с водой (так же, как вы не можете казнить другого обратный вызов)
асинхронный обратный вызов , когда код внутри этих методов выполняется из другого потока или, возможно, на другом компьютере (в дальнейшем вы будете наблюдателем для этого другого вычисления)
, так что если вы создаете новый поток при каждом обратном вызове, тогда все эти обратные вызовы могут выполняться параллельно
пример -> Это похоже на то, что у вас много детей, которых вы отправляете одному пить воду, пока он набирает воду, поэтому пошлите другого за едой, потом другого, чтобы принести вам кофе и так далее