您的位置:首页 > 移动开发 > Android开发

初识java接口回调机制与androidView的触发事件回调

2015-04-27 15:58 381 查看

回调:

概念网上各大blog都有说,这里我就不说了,直接说理解吧。

一、建模

我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。于是接口回调机制比喻模型如下



Android中:好比你的Button点击之后会直接调用你写重写的Onclick(),为什么?

那是因为很多系统的类你理解的不是很好,需要看源码。

首先我们用匿名类的形式重写View.OnClickListenner(){

public void onclick(){

//dosomething

};

}

然后把这个接口的对象通过SetonClickListenner传给View类,当点击时,会调用view类的

public boolean callOnClick() {

ListenerInfo li = mListenerInfo;//就是你传过来的onclickListenner对象

if (li != null && li.mOnClickListener != null) {

li.mOnClickListener.onClick(this);

return true;

}

return false;

}

调用你写的onclick方法

二:抽象使用



1:第一步在类A中重写接口方法

2:第二步传接口的对象给类B

3:当类B到触发条件时,执行类A接口中的方法(回调)

三:实战

1:在Me类中,匿名类形式实例接口并重写方法

public class Me{

public static void main(String[] args){

//我有个问题要问你

System.out.println("ME:问你个问题。。。");

You you = new You();

you.setcallback(new callback() {

@Override

public void oncallback() {

// TODO Auto-generated method stub

System.out.println("ME:谢谢你通知我,我要做事了");

}

});



}

}

2:通过setListenner把callback的传递过去 见上面

3:在类YOU中使用callback的oncallback方法

public class You {

callback mcalCallback;

public void setcallback(callback mCallback){

this.mcalCallback = mCallback;

System.out.println("YOU:收到你的问题了。。。等5秒告诉你");

new Thread(){

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

try {

Thread.sleep(5000);

System.out.println("YOU:告诉你了。。。");

mcalCallback.oncallback();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}.start();



}



}

4:测试结果如下

ME:问你个问题。。。

YOU:收到你的问题了。。。等5秒告诉你

ME:谢谢你通知我,我要做事了

暂时java的接口回调就研究在这里。






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: