1. 程式人生 > >Android中 .stub類的使用

Android中 .stub類的使用

stub類是為了方便client,service互動而生成出來的程式碼。

AIDL(Android Interface Definition Language Android介面定義語言)實現程序間通訊,尤其是在涉及多程序併發情況下的程序間通訊

aidl會在gen中自動生成一個同名的IaidlData.java介面檔案,該介面檔案包含一個抽象類stub,其繼承了android.os.Binder、
實現IaidlData介面故,我們實際需要實現的是Stub抽象類。
互動過程client<-->proxy<-->stub<-->service
stub和proxy是為了方便client/service互動而生成出來的程式碼,這樣client/service的程式碼就會比較乾淨,不會嵌入很多很難懂的與業務無關的程式碼

public final class WifiP2pServiceImpl extends IWifiP2pManager.Stub{

...

 public void funtion() {

     ...

}

...

}

IWifiP2pManager.aidl檔案

interface IWifiP2pManager{

...

 void funtion();

...

}

public class WifiP2pManager {

IWifiP2pManager mService;

    public void funtion() {
        try {
            mService.funtion();
        } catch (RemoteException e) {
        }
    }

}

然後在其他類中

WifiP2pManager mWifiP2pManager = (WifiP2pManager) context.getSystemService(Context.WIFI_P2P_SERVICE);

mWifiP2pManager.funtion()