Android中 .stub類的使用
阿新 • • 發佈:2019-02-06
stub類是為了方便client,service互動而生成出來的程式碼。
AIDL(Android Interface Definition Language Android介面定義語言)實現程序間通訊,尤其是在涉及多程序併發情況下的程序間通訊
aidl會在gen中自動生成一個同名的IaidlData.java介面檔案,該介面檔案包含一個抽象類stub,其繼承了android.os.Binder、
實現IaidlData介面故,我們實際需要實現的是Stub抽象類。
互動過程client<-->proxy<-->stub<-->servicestub和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()