Java Android中的回调是什么?
我想了解回调的概念。我在互联网上搜索过关于回调的内容,有很多使用接口的示例,其中一个类正在使用该接口调用另一个类的方法。但是我仍然不能理解回调的主要概念,使用回调的目的是什么?首先创建一个接口,然后定义一个方法,该方法将充当回调。在本例中,我们将有两个类,一个classA和另一个classB 接口:Java Android中的回调是什么?,java,android,Java,Android,我想了解回调的概念。我在互联网上搜索过关于回调的内容,有很多使用接口的示例,其中一个类正在使用该接口调用另一个类的方法。但是我仍然不能理解回调的主要概念,使用回调的目的是什么?首先创建一个接口,然后定义一个方法,该方法将充当回调。在本例中,我们将有两个类,一个classA和另一个classB 接口: public interface OnCustomEventListener{ public void onEvent(); //method, which can have paramet
public interface OnCustomEventListener{
public void onEvent(); //method, which can have parameters
}
侦听器本身在classB中(我们只在classB中设置侦听器)
在classA中,我们如何开始倾听classB所说的一切
classB.setCustomEventListener(new OnCustomEventListener(){
public void onEvent(){
//do whatever you want to do when the event is performed.
}
});
如何从classB触发事件(例如按下按钮时)
另外,您的自定义侦听器可能有您想要的任意多个参数
回调在Java中非常有用 使用Callback,您可以通知另一个类异步操作已成功或错误完成。前面已经讨论过 在计算机编程中,回调是作为参数传递给其他代码的一段可执行代码,这些代码希望在方便的时候回调(执行)参数。调用可以像在同步回调中那样立即进行,也可以像在异步回调中那样在稍后进行
我在以下情况下使用: 在UI中,我从一个按钮得到一个动作,例如,用户想要下载一个500mb的文件。 谢谢,我将初始化后台引擎(AsyncTask类)并将参数传递给他。 在UI上,我将显示一个阻止进度对话框,并禁用用户进行任何其他单击。问题是:何时从UI中移除阻塞?答案是:当引擎成功或失败时,可以是回调或通知 通知和回调的区别是什么?这是另一个问题,但1:1的回调速度更快 这是一个很好的例子,它很好地描述了回调和用例 回调的概念是在另一个类中的某些工作完成时通知一个类同步/异步。有人称之为好莱坞原则:“不要叫我们,我们叫你” 下面是一个例子:
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);
}
类A调用类B在线程中完成一些工作。如果线程完成了工作,它将通过回调通知类A并提供结果。所以没有必要进行投票或其他什么。一旦结果可用,您将立即获得结果
在Android中,回调用于活动和片段之间的f.e。因为片段应该是模块化的,所以您可以在片段中定义回调来调用活动中的方法。
回调接口
用于android中片段
到片段
的通信
请参考您的理解。链接:这是一种在Java中实现lambdas的方法,因为它们在Java 8之前不受支持。非常感谢,现在我对CallbackShanks有了很多想法。这是一个非常简单和不错的示例……为necropost道歉,但我认为示例中有一个小错误。我认为“new Thread(new Runnable()…”的代码应该在类B的构造函数中。在尝试运行示例时,我遇到了一个错误,但在将代码放入构造函数后,它成功了。如果我在这里出错,请道歉。这非常有用-但我有一个问题…在上述情况下,类B定义了侦听器,这意味着任何想要侦听事件必须创建一个新的B对象,然后必须调用该方法。例如-从类a-->B B=new B();B.setCustomEventListener(this);类似地从类D/类E B=new B();B.setCustomEventListener(this);是否有任何方法可以避免在我要侦听的所有类中创建对象B?
if(this.mListener!=null){
this.mListener.onEvent();
}
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);
}