精华内容
下载资源
问答
  • Android回调

    2016-07-21 17:45:49
    Android中的回调其实就是: A类调用B类的方法,B类需要时间处理,当B类处理完成后通过调用A类的方法把结果回传给A类。 举个网上很流行的例子: 你到一个商店买东西,刚好你要的东西没有货,于是你在...

    Android中的回调其实就是:

    A类调用B类的方法,B类需要时间处理,当B类处理完成后通过调用A类的方法把结果回传给A类。


    举个网上很流行的例子:

    你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。
    在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。


    示例代码

    • 回调监听
    public interface CallbackListener {
    
        void method1();
    
        void method2();
    
    }
    • B类:将结果通过方法回调给调用方
    public class AssistClass {
    
        public boolean doSomething(final CallbackListener listener){
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Thread.sleep(1000);
                        listener.method1();
                        Thread.sleep(1000);
                        listener.method2();
                    }catch (Exception e){
                        Log.i("yico",e.toString());
                    }
                }
            }).start();
    
            return true;
        }
    
    }
    • A类:注册回调,调用B类方法
    public class ActivityCallback extends AppCompatActivity implements CallbackListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_callback);
            Button btn_start = (Button) this.findViewById(R.id.btn_start);
    
    
            btn_start.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AssistClass c = new AssistClass();
                    boolean b = c.doSomething(ActivityCallback.this);
                    Log.i("yico", "b = " + b);
                }
            });
    
        }
    
        @Override
        public void method1() {
            Log.i("yico", "method1");
        }
    
        @Override
        public void method2() {
            Log.i("yico", "method2");
        }
    
    }
    展开全文
  • 首先要申明回调的概念不是安卓的,而是java的,所以当你卡在安卓回调函数理解上的时候,不妨先看完这篇文章,也许会给你一些启示。    在理解回调前,在网上找了很多很多的安卓回调的案例,但是都理解不了,我...

         首先要申明回调的概念不是安卓的,而是java的,所以当你卡在安卓的回调函数理解上的时候,不妨先看完这篇文章,也许会给你一些启示。

     

         在理解回调前,在网上找了很多很多的安卓回调的案例,但是都理解不了,我怀疑我的理解能力有问题,但相信比我聪明的你能够得到你想要的知识。

     

         首先,我们要理解,为什么要用回调?回调有什么好处?回调主要是能给代码解耦,增加代码的重用性,那让我们一起来看看这段代码。

     

         一开始,我把代码全部写在一个名为Test的java文件里,跟回调无关,代码很简单。直接看:

     

    public class Test {
    
    //正常程序流程,第三步要实现的方法不会写,先调出去给别人写
    
    public static void paint(MyPaint f){
    
    System.out.println("第一步");
    
    System.out.println("第二步");
    
    System.out.println("第三步不会写");
    
    f.mypaint();  //这里相当于一个钩子,你main方法里调用哪个类,这里就实现什么方法,调用第一个类就实现第一个类中重写的方法,调用第二个类就实现第二个类中重写的方法,很好的保障了代码的重用性。
    
    System.out.println("第四步");
    
    }
    
     
    
    public static void main(String[] args){
    
    paint(new Test1Paint());
    
    paint(new Test2Paint());
    
    }
    
    }
    
    //定义一个接口,在接口里定义一个方法,所有实现这个接口的类都要重写接口中的方法
    
    public interface MyPaint {
    
    public void mypaint();
    
    }
    
    //第一个实现了接口里的方法并重写
    
    class Test1Paint implements MyPaint{
    
    public void mypaint() {
    
    System.out.println("Test---1---Paint的方法");
    
    }
    
    }
    
    //第二个实现了接口里的方法并重写
    
    class Test2Paint implements MyPaint{
    
    public void mypaint() {
    
    System.out.println("Test---2---Paint的方法");
    
    }
    
    }
    
     

     

     

     

    接下来要完成的是将这些代码解耦:

    思路,1、接口与实现接口的类可以放在一个java文件中,2、程序正常流程放在一个java文件中,3、main方法放在一个文件中,因此,我的最终代码是这样:


    第一个文件:Test.java


    <span style="font-size:14px;">package com.tuzhi.www;
    
     
    
    public class Test {
    
    public static void main(String[] args){
    
    TestPaint test=new TestPaint();
    
    test.paint(new Test1Paint());
    
    test.paint(new Test2Paint());
    
    }
    
    }</span>


     

    第二个文件:MyPaint.java


    <span style="font-size:14px;">package com.tuzhi.www;
    
     
    
    public interface MyPaint {
    
    public void mypaint();
    
    }
    
     
    
    class Test1Paint implements MyPaint{
    
    public void mypaint() {
    
    System.out.println("Test---1---Paint的方法");
    
    }
    
    }
    
     
    
    class Test2Paint implements MyPaint{
    
    public void mypaint() {
    
    System.out.println("Test---2---Paint的方法");
    
    }
    
    }</span>


     

    第三个文件:TestPaint


    <span style="font-size:14px;">package com.tuzhi.www;
    
     
    
    public class TestPaint {
    
    public void paint(MyPaint f){
    
    System.out.println("第一步");
    
    System.out.println("第二步");
    
    System.out.println("第三步不会写");
    
    f.mypaint();
    
    System.out.println("第四步");
    
    }
    
    }</span>


     

    当然,我是小白,大家觉得哪里讲得不对的地方,欢迎指正,共同进步!

    展开全文
  • android回调函数

    千次阅读 2015-07-11 00:48:42
    在我们进行android开发的时候,经常遇到一些回调函数,其中,我们最常用的回调就是,当我们对一个组件设置监听的时候,其实就相对于设置的回调函数。例如:Button btn = (Button)findViewById(R.id.btn);btn....

    在我们进行android开发的时候,经常遇到一些回调函数,其中,我们最常用的回调就是,当我们对一个组件设置监听的时候,其实就相对于设置的回调函数。例如:

    Button btn = (Button)findViewById(R.id.btn);
    
    btn.setOnClickListener(new Button.OnClickListener(){//创建监听    
                public void onClick(View v) {    
                    String strTmp = "点击Button01";    
                    Ev1.setText(strTmp);    
                }    
    
            }); 
    

    首先我们了解一下什么叫做回调函数。假设我们有两个类,分别为A和B,其中A需要调用B中的函数,但是B也需要调用A中的函数C,则C就是回调函数,这样看来,就相当于实现一个双向调用。

    我们在进行android开发的时候,经常使用一些开源社区贡献的一些有关于网络获取数据或者是下载图片的开源包,这些包里面用到了很多回调函数,现在我们就是用一个获取网络数据的例子,来看一看如何定义自己的回调函数。

    首先需要声明的是,回调函数是试用接口实现的。我们一步一步来实现回调函数。

    1:定义一个接口,其中定义一些需要用到的回调函数。

    名称:DownInterface.java

    package interfaces;
    
    public interface DownInterface {
    
        //需要用到的回调函数
        public void onDownloadSuccess(String result);
    }
    

    2:定义工具类,调用回调函数

    该工具类有以下属性:

    1. 类中有刚刚所定义的接口的对象
    2. 类的构造函数中,刚刚定义的接口作为参数
    3. 在需要调用接口函数的时候,调用接口函数

    我们在这里实现一个工具类,该工具类实现从网络中获取数据,当获取数据成功的时候,调用接口中的onDownloadSuccess()函数,将数据传送给调用该类的对象。

    下面我们定义这个工具类:

    DownLoadEventNotifier .java

    package interfaces;
    
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    
    import com.sdu.utils.StaticValue;
    
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    
    public class DownLoadEventNotifier {
    
        private DownInterface dif;
    
        //处理数据接收完成之后,调用接口函数
        private Handler handler = new Handler(){
    
            @Override
            public void handleMessage(Message msg) {
                // TODO Auto-generated method stub
                if(msg.what == 0){
    
                    String back = (String)msg.obj;
                    dif.onDownloadSuccess(back);
                }
            }
    
        };
    
        public DownLoadEventNotifier(DownInterface dif){
            this.dif = dif;
    
        }
    
        //开始进行下载
        public void start(String req,String url){
            new Thread(new DealThread(req, url)).start();
        }
    
        class DealThread implements Runnable{
    
            private String req;
            private String url;
    
            public DealThread(String req,String url){
                this.req = req;
                this.url = url;
            }
    
            @Override
            public void run() {
                // TODO Auto-generated method stub
                deal();
            }
    
            private void deal(){
                Log.e("req",req); //获取响应内容
    
                List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();  
                params.add(new BasicNameValuePair("REQUEST", req));
    
                try {
                    //http://jiduoduo.duapp.com
                    //http://211.87.227.124/study.php
                    HttpPost postMethod = new HttpPost(StaticValue.URL+url);
                    postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
    
                    Log.e("url",StaticValue.URL+url); //获取响应内容
    
                    HttpResponse response = new DefaultHttpClient().execute(postMethod); //执行POST方法
                    String back = EntityUtils.toString(response.getEntity(), "utf-8");
    
                    Log.e("result", "result = " + back); //获取响应内容
    
                    Message msg = Message.obtain();
                    msg.obj = back;
                    msg.what = 0;
    
                    handler.sendMessage(msg);
    
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
    
        }
    
    }
    

    3:使用该工具类

    下面我们看一下,如何使用该工具类,在A类中,假设有一个Button,点击该按钮之后,获取网络中的数据,当网络中的数据获取成功之后,打印出该数据。

    下面我们看一下调用的代码:

    package com.sdu.activities;
    
    import interfaces.DownInterface;
    import interfaces.DownLoadEventNotifier;
    
    import com.sdu.androidmarket.R;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class TestActivity extends Activity{
    
        private Button btn;
        private DownLoadEventNotifier den;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            btn = (Button)findViewById(R.id.button1);
    
            btn.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    den = new DownLoadEventNotifier(new DownInterface() {
    
                        @Override
                        public void onDownloadSuccess(String result) {
                            // TODO Auto-generated method stub
                            Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });
    
            super.onCreate(savedInstanceState);
        }
    
    }
    

    看到了吧,是不是感觉很熟悉?我们经常使用的下载工具包,里面有onLoading(),onSuccess(),onStop()等这些函数其实都是回调函数。其实我们使用回调函数也能定义自己的下载工具类,等过几天我定义一个这样的工具类,试验一下。大家可以试一下如何自己定义一个回调函数。

    展开全文
  • 浅谈android回调

    千次阅读 2017-03-15 09:56:36
    安卓回调机制在很多场合会用到,比如我们用的监听都是回调接口,这里我用一个小获取头像demo来演示下回调 XML代码: mainactivity的xml代码; xmlns:android="http://schemas.android.com/apk/res/android" ...

                                          安卓回调机制在很多场合会用到,比如我们用的监听都是回调接口,这里我用一个小获取头像demo来演示下回调


    XML代码:

    mainactivity的xml代码;

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.dialogfragmentdemo.MainActivity">
    
        <ImageView
            android:id="@+id/iv_icon"
            android:layout_width="80dp"
            android:layout_height="80dp"
            android:layout_centerInParent="true"
            android:scaleType="fitXY"
            android:src="@mipmap/ic_launcher" />
    </RelativeLayout>

    //dialogframgent的xml代码

    <!--注意背景颜色设置半透明#6000000-->
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/rl_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/dialog">
    
        <TextView
            android:id="@+id/tv_camera"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@android:color/white"
            android:gravity="center"
            android:padding="10dp"
            android:text="从相机获取"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp" />
    
        <View
            android:id="@+id/line"
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:layout_above="@id/tv_camera"
            android:background="@android:color/darker_gray" />
    
        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/line"
            android:background="@android:color/white"
            android:gravity="center"
            android:padding="10dp"
            android:text="从相册获取"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp" />
    </RelativeLayout>


    java代码

    //dialogfragment代码

    <!--注意背景颜色设置半透明#6000000-->
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/rl_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/dialog">
    
        <TextView
            android:id="@+id/tv_camera"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@android:color/white"
            android:gravity="center"
            android:padding="10dp"
            android:text="从相机获取"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp" />
    
        <View
            android:id="@+id/line"
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:layout_above="@id/tv_camera"
            android:background="@android:color/darker_gray" />
    
        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@id/line"
            android:background="@android:color/white"
            android:gravity="center"
            android:padding="10dp"
            android:text="从相册获取"
            android:textColor="@android:color/holo_blue_dark"
            android:textSize="18sp" />
    </RelativeLayout>

    //mainactivity代码

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        ImageView iv_icon;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView() {
            iv_icon = (ImageView) findViewById(R.id.iv_icon);
            iv_icon.setOnClickListener(this);
        }
    
        //监听点击头像
        @Override
        public void onClick(View v) {
    
            CustomDialogFragment dialog = new CustomDialogFragment();
            //启动
            // 括号参数(fragment管理员,注意你导包是上面fragment就用什么管理员,随便定义个字符串,用于区分多个dialog用)
            dialog.show(getFragmentManager(), "tag");
    
           /* //第四步 通过接口所在的类点击接口对象
            CustomDialogFragment.ICallBack iCallBack = new CustomDialogFragment.ICallBack() {
                @Override
                public void getImage(Uri uri) {
                    //获取数据;接口括号参数就是结果
                    iv_icon.setImageURI(uri);
                }
            };
    
            //第五步,把接口对象设置到接口定义的set方法里面
            dialog.setiCallBack(iCallBack);*/
    
            //简写通过接口所在的类的对象调用用接口的set方法;实现接口获取接口括号参数,就是结果;
            dialog.setiCallBack(new CustomDialogFragment.ICallBack() {
                @Override
                public void getImage(Uri uri) {
                    iv_icon.setImageURI(uri);
                }
            });
    
    
        }
    }

    //总结回调实现

      第一 在获取数据,需要把数据传递出去的类中 定义一个接口,需要传递数据就在接口里面定义一个方法括号参数就是传递的数据

    //通过回调把数据传给mainActivity
    //第一步定义个接口(如果需要带结果回去就,在里面定义个方法括号参数就是带回去的结果)
    public interface ICallBack {
        void getImage(Uri uri);
    }


    //第二步定义个接口对象 创建个set方法括号参数有接口
    private ICallBack iCallBack;
    
    public void setiCallBack(ICallBack iCallBack) {
        this.iCallBack = iCallBack;
    }
    

    //地三步获取数据给接口方法里面的参数赋值
    iCallBack.getImage(uri);

    //第四步 通过接口所在的类的对象调用用接口的set方法;实现接口获取接口括号参数,就是结果;
    dialog.setiCallBack(new CustomDialogFragment.ICallBack() {
        @Override
        public void getImage(Uri uri) {
            iv_icon.setImageURI(uri);
        }
    });


    展开全文
  • Android回调详解

    千次阅读 2014-10-28 17:47:43
    很多时候开发遇到一些Ui更新 网络数据获取,或者方法方法传递的时候会借助回调函数,那么什么是回调函数 百度百科是这么解释的   回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数...
  • Android 回调机制

    千次阅读 2015-03-27 09:50:10
    Android中到处可见接口回调机制,尤其是UI事件处理方面。举一个最常见的例子button点击事件,button有一个点击方法onClick(),我们知道onclick()是一个回调方法,当用户点击button就执行这个方法。 在Java 中,...
  • Android 回调接口是啥,回调机制详解

    万次阅读 多人点赞 2015-07-16 22:45:27
    首先解决啥是回调: 举个例子:某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过...
  • 产品需求:在微信内分享需要手动配置的分享地址、分享图片与内容描述,引导用户分享,并在微信分享成功回调内进行相应的操作。 首先需要在项目中引入微信jsSDk包,然后通过接口获取后台签名。 封装函数获取微信...
  • Android回调机制

    千次阅读 2016-05-06 21:47:22
    Java模块与模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也是我们在写程序中经常使用的;回调是一种双向的调用模式,也就是说,被调用的接口...
  • android 回调机制

    千次阅读 2014-04-09 18:15:26
    为了实现回调机制的事件处理
  • Android回调机制之Activity与DialogFragment数据传递在实际编程过程中,我们经常碰到这样一种情况:在新建的Dialog或者Fragment中修改数据,但是要在Activity或其他位置进行数据更新,那怎么处理呢?此时我们的回调...
  • Android回调函数机制那点事

    千次阅读 2016-04-01 23:12:26
    Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去...
  • 回调android 源码中大量被使用,那么大量被使用在那些地方呢? 其实我们经常写的onCreate(), onStart(),onClicklistener等. 那么他实现的原理是什么呢?不急,等会我们用代码自定义一个。 其实google工程师...
  • Android 回调的写法

    2020-02-26 21:25:28
    回调的理论分析; 应用场景; ** 代码: ** 首先,写一个接口类: public interface OnListener { void Listener(String code,String msg); } //或者第二种方式 public interface OnListener_2 { void Listener_...
  • 安卓编程回调函数演示和简单使用回调函数进行数据传递。
  • Android回调机制浅析

    千次阅读 2016-05-24 17:51:14
    编程工作的层次可以分为系统编程和应用编程: ...可以有三种机制来完成,同步机制,异步机制和回调机制。 本文主要讨论的是回调机制。   回调概述      一般的正向代码流程的都是是应用调用API中的
  • android回调机制

    千次阅读 2011-09-13 16:03:08
    C, C++a或JS里经常有回调方法,它们都是通过指针来实现的。 而JAVA中不允许直接操作指针,那它的回调是如何实现的呢? 答案:它是通过接口(implements)来实现的。 JAVA方法回调是功能定义和功能实现分享的一种...
  • Js调用Android回调处理

    2019-10-07 11:54:13
    通常在混合app中经常会使用js调用native的...直接调用native方法,对于简单的处理倒是可以,如果需要回调呢?期待的方式是: window.nativeApp.call(XXX,function(res){ //XXX处理回调 }); 这样处理才更符合项...
  • android 回调监听

    2018-06-29 19:43:59
    https://blog.csdn.net/it_zjyang/article/details/51417001
  • Android回调Callback的理解(附demo)

    千次阅读 2016-02-16 06:47:41
    Android开发中经常会用到回调,我很长一段时间都没搞懂回调。所以在这里记录下我对回调的理解,希望可以对他人有所帮助。 demo在此:http://download.csdn.net/detail/violetjack0808/9432382 我的理解是:...
  • Android 回调函数的理解,实用简单

    万次阅读 2017-03-03 14:42:00
    作者: 夏至,欢饮转载,也请保留这段申明一般我们在不同的应用传递数据,比较方便的是用广播和回调函数,当然还有其他方式,这里学学回调函数的使用; 什么是回调函数呢?在C/C++中,因为我们有指针这个东西,所以...
  • Android 回调函数callBack

    2016-07-08 21:24:28
    1、声明 /** * 回调函数 * @param callBack */ public IPCallBack ipCallBack; public void callSocket( IPCallBack callBack) { this.ipCallBack=callBack;
  • 注意,我要放大招了!!哈哈哈哈,开玩笑啦~ 最近一直被回调接口折磨的欲生欲死的,...接口回调android中一般是使用在数据的交互上(我是一般这样的,不对的请大神指教),比如你在Activity-A(下面简称A)中定义了
  • Android回调机制详细解释

    千次阅读 2018-02-24 11:34:46
    回调机制基本原理:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,...
  • Android回调的使用方式

    2013-12-19 23:09:27
    用多了Android的OnClickListener,OnTouchListener 等回调方法,打算自己动手写一个。 C++实现回调的方式是用指针,java当然也有自己实现回调的方式。 先定义接口  这里定义一个动作类 public interface MyAction ...
  • android 回调执行的线程问题

    千次阅读 2017-01-05 17:50:58
    1.对于直接回调,在调用线程执行。 2.对于new Handler(Looper.getmainLooper()).post(new Runnale())...在主线程执行。 3.对于aidl回调,在binder线程执行,在binder线程,可直接回调其他进程(线程)传入的回调...
  • Android回调机制简单总结:Handler更新UI

    千次阅读 2015-10-16 10:48:52
    为了满足项目正常运行有些时候会使用到接口的回调机制,因为之前在操作Fragment和Activity之间进行通信时用到过接口的回调机制,当时没有总结的想法,现在又要使用时,发现已经存有模糊的记忆了,为了便于复习,再次...
  • 回调函数 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 240,537
精华内容 96,214
关键字:

安卓回调