zoukankan      html  css  js  c++  java
  • JAVA回调函数ANDROID中典型的回调地方

    在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序。

    在JAVA里面我们使用接口的方式来实现函数的回调。

    回调的通俗就是:程序员阿祥写了一段程序(CallPerson)其中有回调函数的接口(PhoneCall),并且封装好了程序(CallPerson)。程序员阿呆写了程序(MumCall)要让

    阿祥写的程序(CallPerson)调用阿呆写的程序(MumCall)中的方法。于是阿祥的程序(CallPerson)通过程序中(CallPerson)的接口(PhoneCall)调用阿呆的程序(MumCall)的方法。

    列子如下:

    /**
     * 阿祥的程序CallPerson
     * @author joker.chan
     *
     */
    public class CallPerson {
    
        private PhoneCall phoneCall;
        
        public CallPerson(PhoneCall phoneCall) {
            // TODO Auto-generated constructor stub
            this.phoneCall = phoneCall;
        }
        
        public void phoneCall() {
            phoneCall.phonecall();
        }
        
    }
    /**
     * 回调函数电话接口
     * @author joker.chan
     *
     */
    public interface PhoneCall {
    
        public void phonecall();
        
    }
    /**
     * 阿呆的程序MumCall
     * @author joker.chan
     *
     */
    public class MumCall implements PhoneCall {
    
        @Override
        public void phonecall() {
            // TODO Auto-generated method stub
            System.out.println("妈妈打电话叫你回家吃饭了!!!");
        }
    
    }

    调用方法:

    public static void main(String[] args) {
            // TODO Auto-generated method stub
            MumCall mc = new MumCall();
            CallPerson cp = new CallPerson(mc);
            cp.phoneCall();
    
        }

    运行结果:

    妈妈打电话叫你回家吃饭了!!!

     Android中回调函数的基本使用。

    1.按钮的监听

    Button button = (Button)this.findViewById(R.id.button);
    button.setOnClickListener(newButton.OnClickListener() {
    
    //回调函数
    @override
    publicvoidonClick(View v) {
    buttonTextView.setText("按钮被点击了");
    }
    });

    上面的代码给按钮加了一个事件监听器,这其实就是“回调”最常见的应用场景之一。我们自己不会显式地去调用onClick方法。用户触发了该按钮的点击事件后,它会由Android系统来自动调用。

    2.生命周期函数

    @Override
    publicvoidonCreate(BundlesaveInstanceState) {
      super.onCreate(saveInstanceState);
     // You code...
    }
    @Override
    publicvoidonResume() {
      super.onResume();
     // You code...
    }

    Activity的整个生命周期基本上都说回调函数在发挥作用。

    优点:优点主要是将代码中变与不变的部分相分离,从而大大提高了程序的重用性和扩展性。

    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();
      }
  • 相关阅读:
    wifi 天线
    Ubuntu下通过SSH远程登录服务器的方法
    wifi 天线
    免费20G全能空间正在火爆开放中。。。。。要的抓紧时间申请了.
    php设计模式 Mediator (中介者模式)
    DEDE图片集上传图片时出错显示(FILEID)的解决办法
    SPL spl_autoload_register与__autoload方法使用示例浅谈
    mysql_fetch_array()和mysql_fetch_assoc()两个函数的区别
    nginx多站设置
    php中echo(),print(),print_r()的区别
  • 原文地址:https://www.cnblogs.com/android-joker/p/4422528.html
Copyright © 2011-2022 走看看