標籤:over 強制 cti 比較 back androi 調用 資料傳遞 轉換
雖然Handler用的地方比較普遍,但是介面也有他的獨特之處,比較直觀,然後降低了耦合性
如有一介面,需要將資料傳給使用的activity中,介面如下
public interface PushValue { void push(byte v,byte v2); }
1:判斷context是否繼承並通知調用介面
if(context instanceof PushValue){ ((PushValue)context).push((byte)(crc16&0xff),(byte) ((0xff00 & crc16) >> 8)); }
這時只需要在資料傳遞處強制轉換這個介面並調用,然後在使用處(比如Activity中 implements這個介面並實現其push方法即可)
@Override public void push(byte v,byte v2) { tvCrcResult.setText(""); tvCrcResult.setText(ConvertHexByteToString(v)+" "+ConvertHexByteToString(v2)); }
2:setCallBack的方式
1方法你會發現我們需要給資料來源傳context這個值,然而傳了之後代碼的耦合性就變強了,所以第二種方法解決了此麻煩
private PushValue pushValue ;public void setPushValueCallBack(PushValue pushValueCallBack){ this.pushValue = pushValueCallBack;}
先聲明介面在建立一個set方法,作用是將外部即將執行個體化的介面傳進來,然後直接在資料來源產生處調用 介面內方法即可
pushValue.push((byte)(crc16&0xff),(byte) ((0xff00 & crc16) >> 8));
外部執行個體了使用setPushValueCallBack這個方法的類之後,直接調用setPushValueCallBack方法即可
new xxx類.setPushValueCallBack(new Crc16.PushValue() { @Override public void push(byte v, byte v2) { //執行相關操作即可 } });
這個是仿照Android綁定點擊監聽器寫的,這個也是類似於監聽器,資料來源有資料傳過來,使用的地方將會監聽到變化然後執行相應操作
介面和Handler有什麼區別?
調用Handler系統是會將你的Handler放在主線程中去執行的,然而我們調用的介面卻還是在原本的線程中運行
java/Android 介面調用的幾種寫法