java/Android 接口調用的幾種寫法


雖然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放在主線程中去執行的,然而我們調用的接口卻還是在原本的線程中運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM