開發Android時的那些筆記...!!
每個Android裡幾乎都一定會看到的觀察者模式...
*******************************
比較常見的是當監聽一個按鈕事件的Listener:
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Do something
}
});
或者是觀察一事件觸發或完成後並回傳事件處理結果.
程式裡也才常看到類似下列的Callback:
mClazz.doSomething(new Callback() {
@Override
public void callback(Result result) {
// Do something with the result.
}
});
通常實作這類型的模式你會需要一個介面當作listener:
public interface Callback{
void callback(Result result);
}
然後在可被觀察的類別裡寫一個可以加入該listener的函式:
public class Clazz{
public void doSomething(Callback listener){
Result result = new Result();
// do something asynchronously
if(listener!=null) {
listener.callback(result);
}
}
}
基本上大概是這樣。
當Clazz完成一些非同步的工作項目後,例如下載完後,會回傳一個Result,
然後我們可以再對這個Result在Clazz以外的Scope做一些額外的處理。
這樣的匿名參數寫法其實是比較偷懶的。
比較要注意的地方像是,
能排除這些問題,程式碼能多簡單就多簡單囉^^"
了解後再去看Observable/Observer,印象會比較深刻。
http://developer.android.com/reference/java/util/Observer.html
http://developer.android.com/reference/java/util/Observable.html