今天看安卓书,遇到了java回调,不太明白,但是经过在网上一番搜索,也总算是理解了一点,在此把心得记下来,一个是为了日后万一忘记了可以再看看,另一个是如果帮到了你,我会很开心。
回调包括同步和异步两种。
先说异步:
我想吃德克士,于是叫了德克士的手枪腿两个,叫之前我把自己的住址(按照德克士要求的格式)发送给了德克士餐厅的前台,我放下电话开始打王者荣耀等待手枪腿的到来。
与此同时,德克士厨师收到我想吃手枪腿的订单后,开始制作手枪腿,然后照着地址送回给我。
public interface ToAddress { void 送到(); }public class 小明 implements ToAddress{ private 厨师 德克士; public void 儿子想吃(final Food 手枪腿) { new Thread(new Runnable() { @Override public void run() { 德克士.做菜并送外卖(手枪腿, 小明.this);//此过程会花很长时间 } }).start(); //接下来可以干一些其他事,等外卖送来 //比如 打王者荣耀 } /** * 小明告诉厨师自己的地址 * 即实现了接口中如何送到自己家的方法 */ @Override public void 送到() { //坐1路车到中央百大下次 //送到三楼401 //小明 收 } public class 厨师 { public void 做菜并送外卖(Food food, ToAddress toAddress) { //做food... //做好后调用回调方法,送去食物 toAddress.送到(); } }为什么说是异步:因为我下了订单后,没有等待他送来鸡腿再打王者荣耀,而是边打边等。
同步回调:
比如安卓或者swing中的任何监听,或者容器的监听方法。
比如我想到房顶去玩,可我没有房顶,我也上不去,可是有土豪提供给了我一个梯子还有房顶(方法:“土豪施舍”),但是需要在他规定的范围内活动(回调接口)。
我只要调用“”土豪施舍”这个方法,就可以获得梯子和房顶,再加上只要不出土豪限制的范围,随便玩什么都行(回调)。
以上便是我的理解,如果有错误,欢迎大家直接指出来,好共同进步!