2011年7月19日 星期二

在Android內實現Callback

寫JavaScript一定對CallBack的使用相當熟悉,但是當你要寫Java或Android
卻發現沒辦法把function當作參數傳給另一個function當CallBack用
因為在Java內並沒有function pointer,所以就有點麻煩
這時候可以用類似Observer的方式來做
簡單來說就是,既然無法丟一個function進去
那你可以把要執行的function放到一個物件內
把物件當參數丟進去就可以了

作法
一.建立公用的Observer Interface
利用Interface將允許使用的method定義出來

public interface IObserver{
    public abstract void success(Object data);
    public abstrcat void fail(String msg);
    public abstract void exception(String msg)
}

二.建立要使用的observer Class
把要做的工作在這這Class內實做出來
當然你也可以把這Class建立主(main)程式內,
這樣可以更方便

public class MyObserver implements IObserver{
    @override
    public abstract void success(Object data){
        ...
    };
    @override
    public abstrcat void fail(String msg){
        ...
    };
    @override
    public abstract void exception(String msg){
        ...
    }    
}

三.主程式應用
public class myApp{
    ....
    public void run(int status,IObserver observer){
        .....
        if(status==1){
            observer.success(data)
        }else if(status==2){
            observer.fail()
        }else{
            observer.exception("exception");
        }
    };
}

沒有留言: