什么是回调函数?

1.1 简而言之,回调函数就是一个通过函数指针调用的函数
如果你把函数哦指针(地址值)作为一个参数传递给另一个函数,
当这个指针被用为调用它所指向的函数时,我们就说这是一个回调函数

Java中如何使用回调函数?

2.1在Java中不允许直接操作指针,回调的实现,是在java当中通过接口来实现。
2.2方法的回调是功能定义和功能实现分离的一种手段,是一个松耦合设计思想
作为一种系统框架,必须有自己的运行环境,并且提供用户实现的接口。
2.3在Activity中定义了很多对生命周期中不同状态要调用的方法,这些方法都是空实现,
系统那个框架要调用,用户就要调用实现

模拟Android回调机制体现

3.1Acitivity接口类(为了说明问题,模拟Activity的生命周期中的三方法,定义接口)

public interface IActivity{
//       定义一个界面创建时将被调用的方法onCreate
        public abstract void onCreate();
//       定义一个启动界面将被调用的方法onStart
        public abstract void onStart();
//        定义一个界面销毁时将被调用的方法onDestory
        public abstract void onDestory();
    }

3.2Activity接口的实现类(模拟implments Activity时候去实现里面的方法)

class Activity implements IActivity{
    @Override//实现界面创建时调用的方法,
    public void onCreate() {
        Log.d("info","onCreate-------------->");
    }
    @Override//实现界面启动时候调用的方法,
    public void onStart() {
        Log.d("info","onCreate-------------->");
    }
    @Override//实现界面销毁时调用的方法
    public void onDestory() {
        Log.d("info","onCreate-------------->");
    }
}

3.3系统运行环境类 AndroidSystem( 模拟当实现接口方法时候,系统“回调” )

class AndroidSystem{
//    定义一个创建常量
    public static final int CREATE=1;
//    定义一个启动常量
    public static final int START=2;
//    定义一个销毁常量
    public static final int DESTORY=3;
//    定义一个运行方法
    public void run(MainActivity1 m,int state){
        switch (state){
            case 1:
                m.onCreate();//创建
                break;
            case 2:
                m.onStart();//启动
                break;
            case 3:
                m.onDestory();//销毁
                break;
        }
    }
}

3.4测试类,(模拟发到模拟器,真机时候的系统运行状态)

class Test {
    public static void main(String[] args) {
//      实例化一个AndroidSystem类对象
        AndroidSystem system = new AndroidSystem();
//       创建一个Activity类对象
        MainActivity1 activity1 = new MainActivity1();
//        system对象创建Activity界面对象
        system.run(activity1, AndroidSystem.CREATE);
//        system对象启动Activity界面对象
        system.run(activity1, AndroidSystem.START);
//        system对象销毁Activity界面对象
        system.run(activity1, AndroidSystem.DESTORY);
    }
}

系统回调过程图解

4.1:

Android 接口回调切主线程 接口回调定义_回调机制


4.2:看到这里在看看前面的概念,会更好的理解回调机制。

4.3:一句话,回调是一种双向调用模式,就是说,被调用方在被调用时也会调用对方,这就叫回调。

“If you call me, i will call back”。