一直以來對回調接口不是很了解,查了很多資料,現在終于了解了.下面寫寫我對回調的了解:
Android中的回調類似于Java中的事件監聽機制,分為事件源和事件,隻不過是事件源本身來進行事件處理,事件源把某某事件給事件處理,事件處理的結果傳回給事件源.
如何自己寫回調,增加程式的可擴充性,松耦合性?
1.定義接口,裡面的方法根據需要寫相應的參數
2.讓事件源實作接口
3.讓事件源持有事件的對象
4.讓事件注冊接口(寫setXXX--一般适用于fragment,Activity,Service或構造函數--一般适用于普通類)
5.事件源開啟注冊(調setXXX或構造函數)
6.讓事件源調事件的方法
7.讓事件的方法調接口
8.事件源中完成處理
下面寫代碼說明,老師代表事件源,學生代表事件
package com.callback.test;
/**
* @author zhuhai
* 1.定義接口,裡面的方法根據需要寫相應的參數
*
*/
public interface CallBackInterface {
//下面的方法可以靈活定義
public void execute();
}
package com.callback.test;
/**
*
* @author zhuhai
* 2.讓事件源實作接口---implements CallBackInterface
*
*/
public class Teacher implements CallBackInterface {
public Teacher(String str) {
System.out.println(str);
}
public Teacher() {
}
public static void main(String[] args) {
new Teacher("課堂作業幾時寫完?").aa();
}
private void aa() {
// TODO Auto-generated method stub
/**
* 3.讓事件源持有事件的對象--這裡就是new
* 4.讓事件注冊接口(寫setXXX--一般适用于fragment,Activity,Service或構造函數--一般适用于普通類)--這裡相當于傳入this
* 為友善簡寫成一起了
*
* doSome--6.讓事件源調事件的方法
*/
new Student(this).doSome();
}
/**
* 8.事件源中完成處理
*/
@Override
public void execute() {
// TODO Auto-generated method stub
System.out.println("收到了!!" + System.currentTimeMillis());
}
}
package com.callback.test;
public class Student {
private CallBackInterface callBack = null;
/**
* 5.事件源開啟注冊(調setXXX或構造函數)
* @param callBack
*/
public Student(CallBackInterface callBack) {
this.callBack = callBack;
}
public Student(){
}
public void doSome() {
for (int i = 0; i < 10; i++) {
System.out.println("第【" + i + "】作業寫完了!");
}
/**
* 7.讓事件的方法調接口
*/
callBack.execute();
}
}