您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > Android的回调机制
Android中的各种机制Android的通信机制:Android消息机制HandlerNotifation通知栏信息广播的发送与接收Activity与Activity之间的转跳Android签名机制Android安全机制Android回调机制回调函数的定义:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。函数A参数1参数2……参数i(函数指针)……函数B函数B即为一个回调函数几种函数调用比较voidqsort(void*base,intnelem,intwidth,int(*fcmp)(constvoid*,constvoid*));第一个是数组地址,第二是数组大小,第三个是数组中每个元素的字节数,最后一个是个函数指针,表示如何比较数组中的元素。intarray[10]={2,1,54,5,34,64,36,34,67,99};intcomp(constvoid*a,constvoid*b){return*(int*)a-*(int*)b;}qsort(array,10,sizeof(int),comp);在此处,qsort函数就是一个回调函数。Java的回调函数JAVA中不允许直接操作指针,那它的回调是如何实现的呢?答案:它是通过接口或者内部类来实现的。JAVA方法回调是功能定义和功能实现分享的一种手段,是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。1.定义接口Callback,包含回调方法callback()2.在一个类Caller中声明一个Callback接口对象mCallback3.在程序中赋予Caller对象的接口成员(mCallback)一个内部类对象如interfaceCallback(){callback(){//函数的具体实现}}ClassCaller{CallbackmCallback;}这样,在需要的时候,可用Caller对象的mCallback接口成员调用callback()方法,完成回调。请求所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数。ClientService方法A方法B某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程,结果(即处理方法)就是一个回调函数;我的手机号码必须在以前告诉你,即告诉你通过何种方式可以找到我,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。回调函数(方法)小总结回调函数也是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。即调用方A不直接使用此函数function,而是通过调用被调用方B来间接调用function。Android中的回调机制1、在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。比较笨的一种认识:Android中以on开头的方法都是回调方法:onCreate(),onStart(),onPause(),onStop()等等。。实例:1.对于Android界面上Button点击事件监听的模拟):a.定义接口publicinterfaceOnClickListener{publicvoidonClick(Buttonb);}b.定义ButtonpublicclassButton{OnClickListenerlistener;publicvoidclick(){listener.onClick(this);}publicvoidsetOnClickListener(OnClickListenerlistener){this.listener=listener;}}c.将接口对象OnClickListener赋给Button的接口成员publicclassActivity{publicActivity(){}publicstaticvoidmain(String[]args){Buttonbutton=newButton();button.setOnClickListener(newOnClickListener(){@OverridepublicvoidOnClick(Buttonb){System.out.println(clicked);}});button.click();//userclick,Systemcallbutton.click();}}2、在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要通过系统调用来实现自己的操作。实例(对于Android界面上Activity的模拟):a.定义接口publicinterfaceActivity{publicvoidonCreate();.....publicvoidonDestory();}b.Activity接口的实现类MyActivity//定义一个类实现Activity接口publiccalssMyActivityimplementsActivity{@Override//实现方法,简单输出publicvoidonCreate(){System.out.println(onCereate);}.....@Override//实现方法,简单输出publicvoidonDestory(){System.out.println(onDestory);}}c.系统运行环境类AndroidSystem//系统运行安装类publicclassAndroidSystem{//定义常量publicstaticfinalintCREATE=1;....publicstaticfinalintDESTORY=2;//运行方法publicvoidrun(Activitya,intstate){switch(state){caseCREATE:a.onCreate;break;....caseDESTORY:a.onDestory();break;}}}d.测试类//测试类publilcclassTest{publicstaticvoidmain(String[]args){//实例化AndroidSystemAndroidSystemsystem=newAndroidSystem();//实例化MyActivityActivitya=newMyActivity();system.run(a,AndroidSystem.CREAATE);....system.run(a,AndroidSystem.DESTORY);}}Android回调机制小结以上可以看出,接口(系统框架)是系统提供的,接口的实现是用户实现的,这样可以达到接口统一,实现不同的效果。系统在不同的状态“回调”我们的实现类,来达到接口和实现的分类。
本文标题:Android的回调机制
链接地址:https://www.777doc.com/doc-3375686 .html