`
justdoit2000
  • 浏览: 23596 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

回调机制在 Android 监听用户界面操作中的体现

阅读更多

本文讨论以下两个内容:
1. 回调函数
2. 回调机制在 Android框架 监听用户界面操作中的作用
一 回调函数
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

 

 为什么要使用回调函数

因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。  如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,我们要编写一个库,它提供了某些排序算法的实现,如冒泡排序快速排序shell排序、shake排序等等,但为使库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,想让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。

 


Java 中没有指针的概念,通过接口和内部类的方式实现回调的功能:
1. 定义接口 Callback ,包含回调方法 callback()
2. 在一个类Caller 中声明一个Callback接口对象 mCallback
3. 在程序中赋予 Caller对象的接口成员(mCallback) 一个内部类对象如 
new  Callback(){
     callback(){
         //函数的具体实现
     }
这样,在需要的时候,可用Caller对象的mCallback接口成员 调用callback()方法,完成回调.
 二、回调机制在 Android框架 监听用户界面操作中的作用
Android事件侦听器是视图View类的接口,包含一个单独的回调方法。这些方法将在视图中注册的侦听器被用户界面操作触发时由Android框架调用。回调方法被包含在Android事件侦听器接口中:
例如,Android 的view 对象都含有一个命名为 OnClickListener 接口成员变量,用户的点击操作都会交给 OnClickListener的 OnClick() 方法进行处理。
开发者若需要对点击事件做处理,可以定义一个 OnClickListener 接口对象,赋给需要被点击的 view的接口成员变量OnClickListener,一般是用 view 的setOnClickListener() 函数来完成这一操作。
当有用户点击事件时,系统就会回调被点击view的OnClickListener接口成员的OnClick()方法。
实例(对于Android界面上Button点击事件监听的模拟):
1.定义接口
public interface OnClickListener {
    public void OnClick(Button b);
}
2. 定义Button
public class Button {
  OnClickListener listener;
  public void click() {
    listener.OnClick(this);
  }
  public void setOnClickListener(OnClickListener listener) {
    this.listener = listener;
  }
}
3. 将接口对象OnClickListener 赋给 Button的接口成员
public class Activity {
  public Activity() {
  }
  public static void main(String[] args) {
    Button button = new Button();
    button.setOnClickListener(new OnClickListener(){
       @Override
       public void OnClick(Button b) {
                 System.out.println("clicked");
       }    
    });
    button.click(); //user click,System call button.click();
  }
}
参考资料:
百度百科: 回调函数 http://baike.baidu.com/view/414773.html?fromTaglist
java中回调函数的实例说明 http://www.blogjava.net/songfei/articles/126093.html
Android事件侦听浅谈 http://developer.51cto.com/art/201001/180846.htm

分享到:
评论

相关推荐

    Android EditText监听回车键并处理两次回调问题

    我们都知道,在登面,搜索等等有EditText控件的界面上,当用户输入完内容后,点击回车键执行逻辑会有非常好的用户体验,所以今天我们来学习如何监听EditText监听回车键并处理监听时发生了两次回调问题。 代码 首先...

    Android代码-MP3录音机

    AndroidMP3Recorder 说明 ...原项目实现思路讲解:Android MP3录音实现 原项目特点 边录边转码,录完就是...之所以这么设计,是因为mp3Recorder.resume()可能在service中调用,而回调更新UI经常在activity界面上 使用 全局

    疯狂Android讲义源码

     3.3.1 回调机制与监听机制 156  3.3.2 基于回调的事件传播 158  3.3.3 重写onTouchEvent方法响应  触摸屏事件 160  3.4 响应的系统设置的事件 162  3.4.1 Configuration类简介 162  3.4.2 重写...

    疯狂Android讲义.part2

    3.3.1 回调机制与监听机制 156 3.3.2 基于回调的事件传播 158 3.3.3 重写onTouchEvent方法响应 触摸屏事件 160 3.4 响应的系统设置的事件 162 3.4.1 Configuration类简介 162 3.4.2 重写onConfigurationChanged 响应...

    疯狂Android讲义.part1

    3.3.1 回调机制与监听机制 156 3.3.2 基于回调的事件传播 158 3.3.3 重写onTouchEvent方法响应 触摸屏事件 160 3.4 响应的系统设置的事件 162 3.4.1 Configuration类简介 162 3.4.2 重写onConfigurationChanged 响应...

    精通ANDROID 3(中文版)1/2

    23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小结  第24章 文本到语音转换  24.1 Android中的文本到语音转换  24.2 使用语段...

    精通Android 3 (中文版)2/2

    23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小结  第24章 文本到语音转换  24.1 Android中的文本到语音转换  24.2 使用语段...

    Android应用事件处理

    .java文件中的事件代码如下:主要就是三步,绑定文本框id和绑定按钮id,设置监听器监听按钮,最后在监听结果文本框显示。这个是通过匿名内部类实现的。 注意:如果代码有标红,把鼠标放到标红位置按下快捷键alt+...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    F 修复 PC 端模拟器的 touchend 事件回调参数 changedTouches 为空的问题 反馈详情 2020.03.25 更新说明 A 新增 云开发控制台支持开通按量付费 A 新增 云开发支持数据库备份与回档(还原)详情 A 新增 支持小...

    covid-api-summary-recycler-view

    缩略语摘要-Android Java中的RecyclerView示例 特征 筛选项目 排序项目 添加,更新,删除 项目点击回调/监听器 字幕文字 通知每个项目 纹波物品请点击 详细信息wiith BottomSheetDialog 滑动布局以刷新 滚动回收者...

Global site tag (gtag.js) - Google Analytics