加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

畅聊Android中Callback(回调)的使用

发布时间:2021-11-22 10:27:16 所属栏目:教程 来源:互联网
导读:今天Android项目的Bug基本修改完成了,于是就对自己还未了解的回调函数进行了学习。就得到的结果来看,个人觉得回调就像多态一样,比如Boss叫员工去吃饭,但每个员工可能吃不同的食物。只不过,回调是对接口而言。简单来说就是,A对象调用了自己的方法a,方

今天Android项目的Bug基本修改完成了,于是就对自己还未了解的回调函数进行了学习。就得到的结果来看,个人觉得回调就像多态一样,比如Boss叫员工去吃饭,但每个员工可能吃不同的食物。只不过,回调是对接口而言。简单来说就是,A对象调用了自己的方法a,方法a接收的参数是B接口的实例b,而在方法a中将执行接口B中的方法c。这样解释可能有点绕不过来,下面我们来看一个例子。
 
比如宿舍的某个同学设置了一个闹铃,闹铃响时全宿舍的人都能听到,但是张三比较勤奋,听到铃声后起床了,李四比较懒,听到铃声后还要睡会。我们可以把闹铃发出的铃声看作是接口,张三和李四都实现了这个“接口”,闹铃到一定时间后就要“响铃”,响铃就要发出“铃声”,“铃声”就去叫人,至于人会做什么就是人本身的事情。下面看个代码。
 
1.接口CallPerson
 
publicinterface CallPerson {
publicabstractvoid doCallPerson ();
}
定义了一个“叫人”的方法。实现这个接口可理解成安装了闹铃。
2.类Zhangsan
publicclass Zhangsan implements CallPerson {
String name = "Zhangsan";
public String getName () {
return name;
}
@Override
publicvoid doCallPerson() {
System.out.println(getName() + "听到铃声,勤鸟,起床了!");
}
}
3.类Lisi
publicclass Lisi implements CallPerson {
String name = "Lisi";
public String getName () {
return name;
}
@Override
publicvoid doCallPerson() {
System.out.println(getName() + "听到铃声,懒猪,没起床!");
}
}
4.类Alarm
publicclass Alarm {
//响铃
publicvoid ring (CallPerson callPerson) {
callPerson.doCallPerson();
}
}
5.Activity
然后我们在Activity里模拟闹铃开始响铃
import android.os.Bundle;
import android.app.Activity;
publicclass MainActivity extends Activity {
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
Alarm alarm = new Alarm();
Zhangsan zhangsan = new Zhangsan();
Lisi lisi = new Lisi();
//模拟闹铃定时时间到,然后响铃
alarm.ring(zhangsan);
alarm.ring(lisi);
}
}
最后,我们来看看执行的结果
12-07 21:49:41.947: INFO/System.out(6107): Zhangsan听到铃声,勤鸟,起床了!
12-07 21:49:41.947: INFO/System.out(6107): Lisi听到铃声,懒猪,没起床!

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读