




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,Android中的各种机制,Android的通信机制: Android消息机制 Handler Notifation通知栏信息 广播的发送与接收Activity与Activity之间的转跳 Android签名机制 Android安全机制 Android回调机制,回调函数的定义:,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。,函数A 参数1 参数2 参数i(函数指针) ,函数B,函数B即为一个回调函数,几种函数调用比较,void qsort(void *base, int nelem,
2、int width, int (*fcmp)(const void *,const void *); 第一个是数组地址,第二是数组大小,第三个是数组中每个元素的字节数,最后一个是个函数指针,表示如何比较数组中的元素。,int array10 =2 , 1, 54, 5, 34, 64, 36, 34, 67, 99; int comp(const void *a,const void *b) return *(int *)a-*(int *)b; qsort(array,10,sizeof(int),comp); 在此处,qsort函数就是一个回调函数。,Java的回调函数,JAVA中不允许直
3、接操作指针,那它的回调是如何实现的呢? 答案:它是通过接口或者内部类来实现的。 JAVA方法回调是功能定义和功能实现分享的一种手段,是一种耦合设计思想。作为一种架构,必须有自己的运行环境,并且提供用户的实现接口。,1. 定义接口 Callback ,包含回调方法 callback()2. 在一个类Caller 中声明一个Callback接口对象 mCallback3. 在程序中赋予 Caller对象的接口成员(mCallback) 一个内部类对象如interface Callback()callback()/函数的具体实现 Class Caller Callback mCallback; 这样
4、,在需要的时候,可用Caller对象的mCallback接口成员 调用callback()方法,完成回调。,请求,所谓回调,就是客户程序Client调用服务程序Service中的某个方法A,然后Service又在某个时候反过来调用Client中的某个方法B,对于Client来说,这个B便叫做回调函数。,Client,Service,方法A,方法B,某天,我打电话向你请教问题,当然是个难题,_,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。,故
5、事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程,结果(即处理方法)就是一个回调函数; 我的手机号码必须在以前告诉你,即告诉你通过何种方式可以找到我,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。,回调函数(方法)小总结,回调函数也是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。 即调用方A不直接使用此函数function,而是通过调用被调用方B来间接调用function。,Android中的回调机制,1、在Activity中定义了很多生命周期的不同状态要调用的方法
6、,这些方法都是空实现,系统框架要调用,用户也要调用来实现。,比较笨的一种认识:Android中以on开头的方法都是回调方法:onCreate (),onStart (),onPause (),onStop()等等。,实例: 1.对于Android界面上Button点击事件监听的模拟):a定义接口public interface OnClickListener public void onClick(Button b); b. 定义Buttonpublic class Button OnClickListener listener;public void click() listener.onC
7、lick(this);public void setOnClickListener(OnClickListener listener) this.listener = listener;,c 将接口对象OnClickListener 赋给 Button的接口成员public class Activity public Activity() public static void main(String args) Button button = new Button();button.setOnClickListener(new OnClickListener()Overridepublic v
8、oid OnClick(Button b) System.out.println(clicked););button.click(); /user click,System call button.click();,2、在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要通过系统调用来实现自己的操作。实例(对于Android界面上Activity的模拟):a.定义接口public interface Activitypublic void onCreate();.public void onDestory();,b. Activity接口的
9、实现类MyActivity/定义一个类实现Activity接口public calss MyActivity implements ActivityOverride/实现方法,简单输出public void onCreate()System.out.println(onCereate);.Override/实现方法,简单输出public void onDestory()System.out.println(onDestory);,c.系统运行环境类AndroidSystem/系统运行安装类public class AndroidSystem/定义常量 public static final i
10、nt CREATE=1;.public static final int DESTORY=2;/运行方法public void run(Activity a,int state)switch(state)case CREATE:a.onCreate;break;.case DESTORY:a.onDestory();break;,d.测试类/测试类publilc class Testpublic static void main(String args)/实例化AndroidSystemAndroidSystem system = new AndroidSystem();/实例化MyActivityActivity a = new MyActivity();system.run(a,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论