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

Android关于回调函数的定义及用法

2016-04-01 23:20 573 查看
我们在平时做项目的过程中经常会用到回调函数,对于做Android的可能大家对回调函数都不陌生,像点击事件,触摸事件,生命周期等等都用到了回调函数。

所谓的回调函数其实用容易理解的话讲就是“当什么什么的时候调用”,例如:当点击的时候调用,当触摸的时候调用,当创建的时候调用。

今天做个小的案例,来演示一下回调函数,并且让大家理解一下一般在什么情况下可能会用到这种回调函数的定义。

首先创建项目,整个Demo就只有这四个文件



先看一下DataCallBack回调接口的定义



布局文件就只是一个TextView



下面是MainActivity

public class MainActivity extends Activity{

private TextView text;
//创建Handler对象,用于主线程更新界面
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.arg1) {
case 1:
text.setText("我是数据1请求成功并更新界面");
break;
case 2:
text.setText("这里是数据2请求成功并更新");
break;
default:
break;
}
}
};
//创建回调函数,并实现方法
private DataCallBack dc = new DataCallBack() {
@Override
public void acceptData(int num) {
Message msg = Message.obtain();
msg.arg1 = num;
handler.sendMessage(msg);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

text = (TextView)findViewById(R.id.text);
//创建请求数据类对象,将回调对象作为参数传过去
RequestTest req = new RequestTest(dc);

}

}


再看一下RequestTest的定义



看到这里相信大家已经清楚了,我给大家再理一下思路:

1)在MainActivity中定义回调函数,创建RequestTest对象

2)在RequestTest构造方法中接收回调对象

3)当网络请求成功时,再回调acceptData(int num)的方法

4)在回调方法acceptData(int num)中通知Handler主线程更新界面

以上只是说一下大概的思路及应用场景,落实到具体项目中,用法及参数会因需求不同而各异,也会更复杂,以上仅供参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: