我的编程空间,编程开发者的网络收藏夹
学习永远不晚

彻底理解Android的回调机制 看不懂打我

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

彻底理解Android的回调机制  看不懂打我

整篇都将使用例子来讲 看懂例子的注释即可,分为两个例子大同小异 看懂一个可以作类比,要理解深刻还是要自己敲一遍/。/

一、以点外卖为例 客人在外卖软件上点菜 好吃又好玩(≧▽≦)
public interface ICallBack{//商家0提供的接口(顾客可以在这点自己想吃的菜)
    //回调函数
    void postExecute();    //商家0提供的下单功能(给顾客使用)
}
public interface ICallBack1{//商家1
    void postExecute();
}
public class EatWhat { //饿了么软件 专门给商家和顾客提供回调的场景,实际是系统提供给
                       //用户使用的
    private ICallBack callBack;  //商家0的店
    private ICallBack1 callBack1;//商家1的店
    public void setCallBack(ICallBack callBack){//通过饿了么找到对应的商家                                     
         this.callBack=callBack;                      //由顾客来实现            
    }
     public void setCallBack1(ICallBack1 callBack1){//同上
        this.callBack1=callBack1;
    }
    public void eatSth(){         //饿了么将顾客的单子给商家去实现
          if(callBack!=null){
            callBack.postExecute();
        }
        if(callBack1!=null){
            callBack1.postExecute();
        }       
                        }                                                                                                                                                                                                                                
}
public class Test{   //具体的回调场景:顾客:-->打开饿了么-->打开对应商家-->填写订单
                                  //  -->通过饿了么将顾客的回调函数给商家去执行(执行订单)
     public static void main(String...args){
//现在有一个顾客在家呆着 不能出去 需要吃饭,于是客人(new 一个)打开饿了么 
        EatWhat eatWhat=new EatWhat();
        eatWhat.setCallBack1(new ICallBack1() {//顾客喜欢商店1并同时接写好了订单内容,
                                          //  
            @Override
            public void postExecute() {
           System.out.println("我已经想好了 我要吃你家的辣椒炒肉");//填写订单信息
            }
        });
        //确认订单  此时调用eatSth()是会调用顾客自己实现的回调方法即--->要吃辣椒炒肉
        eatWhat.eatSth();
    }
}

商家具体逻辑

:商家暴露对应的下单功能:
postExecute();
, :饿了么软件上提供商家的成员变量

顾客具体逻辑

打开软件:

new EatWhat();

点开具体商家并同时写下自己的订单信息:

setCallBack(new ICallBack1(){ .. });

顾客通过饿了么提交订单

eatWhat.eatSth();

看到这里再深入思考一下:

回调函数:
说白了还是函数的使用 函数的使用说具体点 就要扯到函数指针,而在不同的函数 得到指针的方法不同,上面的例子就是通过

setCallBack(new CallBack(){})来实现给指针赋值
,实现了调用函数的功能。

二、现在再看以下
android
里面的回调,会不会很熟悉了呢,一样看代码
  public interface OnClickListener {
        void onClick(View v);
    }
 public void setOnClickListener( OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l; //将自己实现的监听者加入监听者数组中
    }
public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() { //给指针赋值
            @Override
            public void onClick(View v) {
                System.out.println("我要吃辣椒炒肉");
            }
        });
    }
}

对比两个代码第二个会发现少了实现 其实当我们点击按钮时,系统已经帮我们实现了点击事件,不然怎么会叫做监听呢。

后续还会完善 如有不足 多多包涵!


作者:CZ_WL


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

彻底理解Android的回调机制 看不懂打我

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

彻底理解Android的回调机制 看不懂打我

整篇都将使用例子来讲 看懂例子的注释即可,分为两个例子大同小异 看懂一个可以作类比,要理解深刻还是要自己敲一遍/。/ 一、以点外卖为例 客人在外卖软件上点菜 好吃又好玩(≧▽≦) public interface ICallBack{//商
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录