回调就是A和B有合作关系,A的某一个环节需要B自己告诉A要怎么做,这就是回调,回调一定有接口
button.setOnClickListener(new View.OnClickListener() {public void onClick(View v){})
button.setOnClickListener调用View.OnClickListener(),View.OnClickListener()是回调函数,调用onClick()方法,onClick方法再调用View v的方法回去
基本上各种带setOnClickListener都是回调,各种监听都是回调
链接: link.
● Camera.PreviewCallback:定义了onPreviewFrame(byte[] data, Camera camera) 方法,当存在预览帧(preview frame)时调用该方法
Camera.AutoFocusCallback:定义了onAutoFocus方法,当完成一个自动聚焦活动时调用它。通过传入此回调接口的一个实例,在调用Camera对象上的autoFocus方法时会触发自动聚焦。
● Camera.ErrorCallback:定义了onError方法,当发生一个Camera错误时调用它。有两个常量可用于与传入的错误代码进行比较:CAMERA_ERROR_UNKNOWN和CAMERA_ERROR_SERVER_DIED。
● Camera.OnZoomChangeListener:定义了onZoomChange方法,当正在进行或完成“平滑缩放”(慢慢缩小或放大)时调用它。在Android 2.2 (API Level 8)中引入了这个类和方法。
● Camera.ShutterCallback:定义了onShutter方法,当捕获图像时立刻调用它
对普通函数的调用:调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用–>等待被调用函数执行完毕–>继续执行”
对回调函数调用:调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行。这样,调用程序执和被调用函数同时在执行。当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数,以通知调用程序:函数调用结束。这个过程称为回调(Callback),这正是回调函数名称的由来,例如 Camera.PreviewCallback,当camera获取的Preview的fram时候执行该函数,然后不等其执行完就返回主程序执行,该函数执行完onPreviewFrame,就报告给主程序。
同步调用不需要回调这个概念,异步调用才有回调这个概念
链接讲的清楚,同布,异步,阻塞,非阻塞: link
void setPreviewCallback (PreviewCallback cb)
一旦使用此方法注册预览回调接口,onPreviewFrame()方法会一直被调用,直到camera preview销毁:Camera.PreviewCallback的意思是,camera是主体动作发出者,使用camera的previewcallback调用onPreviewFrame实现异步操作frame,回来的意思是在onPreviewFrame中调用Camera的函数(未体现)。
之所以起名PreviewCallback并不是实现preview的callback,而是camera有很多的回调函数,然后该回调函数和preview有关,主体还是camera