Android中的回调是什么?

Ham*_*hid 72 java android

我想了解回调的概念.我在互联网上搜索了有关回调的内容,并且有许多使用接口的示例,并且一个类使用该接口调用另一个类的方法.但是我仍然无法获得回调的主要概念,使用回调的目的是什么?

Ste*_*ett 157

这是一个很好的教程,它很好地描述了回调和用例.

回调的概念是,如果完成了另一个类中的某些工作,则通知类同步/异步.有人称之为好莱坞原则:"不要打电话给我们,我们称你为".

这是一个例子:

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);
}
Run Code Online (Sandbox Code Playgroud)

A类调用B类来完成Thread中的一些工作.如果线程完成了工作,它将通过回调通知A类并提供结果.所以不需要投票或其他什么.您将在可用时立即获得结果.

在Android中,Callbacks在Activities和Fragments之间使用fe.因为Fragments应该是模块化的,所以你可以在Fragment中定义一个回调来调用Activity中的方法.

  • 非常感谢,现在我有了回调的想法 (2认同)

Bor*_*lov 39

首先创建一个接口,然后定义一个方法,该方法将充当回调.在这个例子中,我们将有两个类,一个是classA,另一个是classB

接口:

public interface OnCustomEventListener{
  public void onEvent();   //method, which can have parameters
}
Run Code Online (Sandbox Code Playgroud)

classB中的监听器本身(我们只在classB中设置监听器)

private OnCustomEventListener mListener; //listener field

//setting the listener
public void setCustomEventListener(OnCustomEventListener eventListener) {
   this.mListener=eventListener;
}
Run Code Online (Sandbox Code Playgroud)

在classA中,我们如何开始监听classB必须告诉的内容

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

我们如何从classB触发事件(例如按下按钮)

if(this.mListener!=null){
   this.mListener.onEvent();
}
Run Code Online (Sandbox Code Playgroud)

PS您的自定义侦听器可能包含任意数量的参数

资源


Nar*_*gis 7

回调在Java中非常有用.

使用Callback,您可以通知另一个已完成但成功或错误的异步操作.


归档时间:

查看次数:

128427 次

最近记录:

7 年,12 月 前