Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is callback in Android? [duplicate]

Tags:

java

android

I want to understand the concept of callback. I have searched on internet about the callbacks and there are many examples using interface, and one class is calling a method of another class using that interface. But still I can't get the main concept of callbacks, what is the purpose of using callbacks?

like image 294
Hammad Shahid Avatar asked Aug 05 '13 09:08

Hammad Shahid


People also ask

What is Android callback?

Callbacks are cool Callbacks are all over the place in Android Development. That's simply because they do a job, and they do it well! By definition: A callback is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action.


2 Answers

Here is a nice tutorial, which describes callbacks and the use-case well.

The concept of callbacks is to inform a class synchronous / asynchronous if some work in another class is done. Some call it the Hollywood principle: "Don't call us we call you".

Here's a example:

class A implements ICallback {      MyObject o;      B b = new B(this, someParameter);       @Override      public void callback(MyObject o){            this.o = o;      } }  class B {      ICallback ic;      B(ICallback ic, someParameter){          this.ic = ic;      }      new Thread(new Runnable(){          public void run(){              // some calculation              ic.callback(myObject)          }     }).start();  }  interface ICallback{     public void callback(MyObject o); } 

Class A calls Class B to get some work done in a Thread. If the Thread finished the work, it will inform Class A over the callback and provide the results. So there is no need for polling or something. You will get the results as soon as they are available.

In Android Callbacks are used f.e. between Activities and Fragments. Because Fragments should be modular you can define a callback in the Fragment to call methods in the Activity.

like image 60
Steve Benett Avatar answered Oct 12 '22 23:10

Steve Benett


You create an interface first, then define a method, which would act as a callback. In this example we would have two classes, one classA and another classB

Interface:

public interface OnCustomEventListener{   public void onEvent();   //method, which can have parameters } 

the listener itself in classB (we only set the listener in classB)

private OnCustomEventListener mListener; //listener field  //setting the listener public void setCustomEventListener(OnCustomEventListener eventListener) {    this.mListener=eventListener; } 

in classA, how we start listening for whatever classB has to tell

classB.setCustomEventListener(new OnCustomEventListener(){     public void onEvent(){        //do whatever you want to do when the event is performed.     } });   

how do we trigger an event from classB (for example on button pressed)

if(this.mListener!=null){    this.mListener.onEvent(); } 

P.S. Your custom listener may have as many parameters as you want

Source

like image 34
Boris Mocialov Avatar answered Oct 13 '22 00:10

Boris Mocialov