Android的回调模拟

  想要彻底理解安卓中用的回调,最好的办法是自己写一个类似的实现安卓中回调功能的实现方法。

我自己写了一个可以实现setOnClickListener回调的工程:

具体目录:

工程源码的具体地址:http://pan.baidu.com/s/1c0hWPkk ,

View.java:模拟的是Android中的View控件,

 1 package com.wyl.component;
 2
 3 import com.wyl.IntP.OnClickListener;
 4
 5 public class View {
 6     public OnClickListener listener;
 7     public String type;
 8
 9     /**
10      * 两个参数的构造器
11      * @param listener
12      * @param type
13      */
14     public View(OnClickListener listener, String type) {
15         super();
16         // this.listener = listener;
17         this.type = type;
18     }
19
20     public View(String type) {
21         super();
22         this.type = type;
23     }
24
25     /**
26      * 一个参数的构造器
27      *
28      * @param listener
29      *            传入的对象为一个接口,
30      */
31     public View(OnClickListener listener) {
32         super();
33         this.listener = listener;
34     }
35
36     public OnClickListener getListener() {
37         return listener;
38     }
39     /**
40      * 这个方法尤其重要,
41      * @param listener
42      */
43     public void setListener(OnClickListener listener) {
44         this.listener = listener;
45     }
46
47     public String getType() {
48         return type;
49     }
50
51     public void setType(String type) {
52         this.type = type;
53     }
54
55     /**
56      * Click()方法模拟button的点击事件,一点击就会触发接口的OnClick()方法
57      */
58     public void Click() {
59         if (listener != null) {
60             /*
61              * 只有View对象(控件对象,比如button等)的成员变量listener不为空的时候
62              * 回调listener接口对象的OnClick方法,这个方法的入参恰恰是View类型的变量
63              */
64             listener.Onclick(this);
65         } else {
66             //如果View对象(控件对象,比如button等)的成员变量listener为空,那么捕获,否则会报错
67             System.out.println("要先注册listener....");
68             return;
69         }
70     }
71 }

OnClickListener.java,是一个接口,

 1 package com.wyl.IntP;
 2
 3 import com.wyl.component.View;
 4 /**
 5  * 模拟Android中的OnClickListener接口,
 6  * 这个接口中只有一个OnClick()方法,
 7  * @author Administrator
 8  *
 9  */
10 public interface OnClickListener {
11     public void Onclick(View view);
12 }

测试类:

 1 package com.wyl.test;
 2
 3 import com.wyl.IntP.OnClickListener;
 4 import com.wyl.component.View;
 5
 6 public class TestClick {
 7     public static void main(String[] args) {
 8         View v1 = new View("ListView");
 9         v1.setListener(new OnClickListener() {
10
11             @Override
12             public void Onclick(View view) {
13                 // TODO Auto-generated method stub
14                 System.out.println("v1控件的类型是:" + view.getType());
15             }
16         });
17         v1.Click();//Click()相当于Android中点击一个button的时候触发的事件,模拟点击事件
18     }
19 }

运行结果:

v1控件的类型是:ListView

时间: 2024-10-23 22:12:03

Android的回调模拟的相关文章

Android 接口回调机制详解

在使用接口回调的时候发现了一个经常犯的错误,就是回调函数里面的实现有可能是用多线程或者是异步任务去做的,这就会导致我们期望函数回调完毕去返回一个主函数的结果,实际发现是行不通的,因为如果回调是多线程的话你是无法和主函数同步的,也就是返回的数据是错误的,这是非常隐秘的一个错误.那有什么好的方法去实现数据的线性传递呢?先介绍下回调机制原理. 回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数

Android查询:模拟键盘鼠标事件之adb shell 实现

1. 发送键盘事件: 命令格式1:adb shell input keyevent "value" 其中value以及对应的key code如下表所列: KeyEvent Value      KEYCODE     Comment 0       KEYCODE_UNKNOWN 1       KEYCODE_MENU     在SDK2.1的模拟器中命令失效,sendevent命令可行 2       KEYCODE_SOFT_RIGHT 3       KEYCODE_HOME

Android笔记二十四.Android基于回调的事件处理机制

如果说事件监听机制是一种委托式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器完全消失了,当用户在GUI控件上激发某个事件时,控件自己特定的方法将会负责处理该事件. 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.View类的常见回调方法 为了使用回调机制来处理GUI控件上所发生的事件,需要为该组件提供对应的事件处理方法,而Java又是一种静态语言,我们无法为每个对象动态地添

Android中回调函数的理解---本人Android纯新手

本人大二,刚刚接触Android,也刚刚申请的cnblog博客,说一下对Android中回调函数的理解,Android中回调函数和C++.JAVA中的默认构造函数差不多,即运行到了一定的代码时自动调用的代码,而Android中的回调函数和C++.JAVA中的默认构造函数的区别在于:C++.JAVA中的默认构造函数在创建一个对象时自动调用,而Android中的回调函数的自动调用是在比如按了HOME键之后.

Android 接口回调实例

Android接口回调方法处处涉及到,比如常用的Button点击事件就是一个接口回调,可见掌握熟练使用接口回调方法的重要性. 接口回调的简单解释就是:比如我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了, 你在某个触发的时机回头来调用我doSomething的方法. 接口回调一般有两种写法,实现形式不一样,但是具体的内部的实现逻辑是一样. 直接给出代码: 方法一: package com.callbackdemo; import android.g

弄明白Android 接口回调机制

以前对于这个机制理解不够深刻,现在重新整理下思路. 一.建模 我理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法.好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话.于是接口回调机制比喻模型如下 第一步: 首先,你我得约定,这个实现的方法是咋样的,叫什么名字,需要传入传出什么.为什么要这样呢?你我得约定电话联系,不是微信扣扣.这就是约定的接口. 我

Android单元测试与模拟测试详解

测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabricator differential 发diff时提交需要执行的单元测试,在开发流程上就可以保证远端代码的稳定性). 2. 测什么? 一般单元测试: 列出想要测试覆盖的异常情况,进行验证. 性能测试. 模拟测试: 根据需求,测试用户真正在使用过程中,界面的反馈与显示以及一些依赖系统架构的组件的应用测

JAVA和Android的回调机制

以 前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了, 所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始 也是这样不理解,看了人家说比较经典的回调方式: Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为c

Android的回调

学了两三周的安卓了,最先开始是看mars老师的视频,看了一两天结合慕课网上的一些安卓视频,到现在算是有点入门了. 安卓立用得比较多的回调函数有点不明是怎么实现的,网上找了一些资料,结合自己的实践,总算有点明白了. 现在就把我自己对Java回调的理解写下来,以方便以后查阅. 比如我们执行一个方法的时候,Android系统就会帮我们调用oncreate()等方法,Android中有大量这样的情形.我们可以这样想,我们执行方法A的时候,系统 怎么就能够帮我们方法B了呢?这种肯定什么我们还没明白的地方.