天天看點

Android對回調接口的了解

    一直以來對回調接口不是很了解,查了很多資料,現在終于了解了.下面寫寫我對回調的了解:

    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();
	}

}