回调机制在安卓很常见。所以有必要理解一下回调究竟是怎么一回事。所以我自己写了一个简单的回调的例子,辅助理解。
我简单的在eclipse建了两个类:MainActivity 和 Fragment 模拟 安卓的 活动 和 碎片。
public class MainActivity {
public static void main(String args[]) {
Fragment fragment=new Fragment();
fragment.sendResult(new Fragment.Callback() {
@Override
public void getData(String data) {
System.out.println(""+data);
}
});
}
}
public class Fragment {
String data="data";
interface Callback{
public void getData(String data);
}
public void sendResult(Callback callback) {
callback.getData(data);
}
}
首先我们看一下Fragment类的代码,我在Fragment类写了一个Callback接口,这个接口定义了一个方法getData(String data)
然后定义了sendResult(Callback)方法,这意味再调用sendResult()方法时需要传入一个实现了Callback接口类的实例,或者匿名内部类。sendResult()方法里我们调用了接口的getData方法,这个方法就是我们自己再MainAcivity类里传入的匿名内部类里实现的方法了。
然后我们看MainActivity类我们可以看到我在main方法里创建了一个Fragment的实例,并且调用了它的sendResult方法传入的是一个Callback接口的匿名内部类。
这样我们就拿到了data数据了。
安卓中的View的点击事件,Okhttp框架等都用了很多回调机制。