本文讨论以下两个内容: 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中的应用广泛,比如在异步任务完成、用户界面更新或者网络请求完成时,都会用到回调。下面将详细介绍Android回调函数的概念、常见使用场景以及如何自定义回调函数。 首先,我们理解一下什么是回调...
在Android开发中,回调机制是实现组件间交互和事件处理的关键技术。回调允许一个对象(通常是事件源)在特定事件发生时通知另一个对象(监听器或回调接口的实现)。在这个"android开发回调使用.zip"文件中,我们可以...
首先,onKeyDown()是Activity中的回调方法,用于监听用户的按键操作。它在按下按键时调用。如果在这个方法中没有正确处理返回键事件,那么返回键可能不会按照预期工作。通常情况下,我们可以重写这个方法来实现对...
"Android广播onReceiver回调更新ui"这个主题主要涉及如何在广播接收器中处理接收到的广播消息,并在用户界面(UI)上做出相应的更新。我们将深入探讨以下几个关键知识点: 1. **广播机制**: Android系统通过发送...
在Android平台上,开发人员可以利用系统的API来实现各种功能,包括对WiFi热点的控制和状态监听。本篇文章将深入探讨如何...在实际项目中,还需要结合用户界面设计和用户体验,创建出友好且功能完善的WiFi热点管理功能。
在Android开发中,回调机制是一种常见的编程模式,用于处理异步操作或事件响应。这个“android回调demo”是为了帮助开发者直观地理解回调是如何工作的。在这个简单的示例中,我们将探讨回调的基本概念、如何在...
在Android程序设计中,监听机制是构建用户交互界面不可或缺的一部分,它使得应用程序能够对用户的操作做出响应。这一机制主要包括三个核心组成部分:事件源、事件和事件监听器。下面将详细阐述这三个方面,并以最...
在Android开发中,回调机制是核心概念之一,它在应用程序的事件处理、异步操作以及组件间的通信中扮演着至关重要的角色。回调可以理解为一种通知机制,当某个特定事件发生时,系统或对象会调用预先设定好的方法,...
在Android开发中, AccessibilityService 是一个非常重要的服务接口,它允许应用在用户与系统交互时获取到相关的事件,比如点击、触摸屏幕或者按下系统按键。这个功能被广泛应用于辅助功能应用,例如为视力障碍者...
在Android开发中,事件监听器(Event Listeners)是实现用户交互和响应各种事件的关键机制。标题提到的“android 外部类作为事件监听器类”是指将一个非匿名类(外部类)作为事件处理的对象,这在某些情况下可能是...
在标题"BroadcastReceiver通过接口回调更新界面"中,我们关注的核心是BroadcastReceiver如何在不直接耦合到Activity的情况下,通过接口回调的方式来更新用户界面。 首先,BroadcastReceiver的常规用法是在Activity...
在安卓开发中,RadioButton是用户界面(UI)设计中常用的一种控件,它通常用于创建单选按钮组,让用户在一组互斥的选项中选择一个。这个压缩包文件"安卓Android源码——(RadioButton与监听).zip"很可能包含了关于...
在Android开发中,有时我们需要对用户界面(UI)进行优化,特别是在处理输入框与软键盘交互的情况时。软键盘的弹出和隐藏会影响布局的行为,可能导致某些元素被遮挡,用户体验受到影响。在这种情况下,我们需要知道...
在Android应用开发中,了解和控制App的前后台状态对于优化用户体验、节省系统资源以及实现特定功能至关重要。本文将深入探讨如何使用一个名为"ActivityMonitor"的工具类来监听App的前后台状态变化。这个工具类是开源...
在Android应用开发中,Fragment和Activity是两个关键组件,它们共同构建了用户界面。Fragment可以理解为可重用的UI片段,而Activity则是一个应用程序的窗口,可以包含一个或多个Fragment。在某些场景下,Fragment...
但是,可以通过监听视图的`onGlobalLayout`回调来间接实现。当键盘弹出时,屏幕的可用高度会变小,通过比较屏幕高度的变化可以判断键盘是否出现。 2. **布局上顶**:当键盘弹出时,如果希望底部的元素(如登录按钮...
在这个例子中,`ShoppingCart`类并不直接与界面交互,而是通过回调机制将添加商品的结果传递给`UIUpdater`,保持了良好的模块化和解耦。这种方式使得购物车功能可以更灵活地与其他系统集成,比如库存管理系统或支付...
创建一个`Call`对象,然后调用`enqueue()`方法,传入一个回调,该回调包含`onProgress()`方法,可以在这里监听下载进度。 ```java OkHttpClient client = new OkHttpClient(); Request request = new Request....
在Android开发中,用户界面(UI)的交互是至关重要的,而`onKeyDown`方法是处理用户硬件按键事件的关键部分。这个压缩包包含了关于如何在Android应用中重写`onKeyDown`方法的源码示例,这对于理解Android事件处理...