欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Android Aidl 通訊機(jī)制

 更新時(shí)間:2016年04月01日 11:54:30   作者:夏操  
這篇文章主要介紹了淺談Android Aidl 通訊機(jī)制 的相關(guān)資料,需要的朋友可以參考下

服務(wù)端:

首先是編寫一個(gè)aidl文件,注意AIDL只支持方法,不能定義靜態(tài)成員,并且方法也不能有類似public等的修飾符;AIDL運(yùn)行方法有任何類型的參數(shù)和返回值,在java的類型中,以下的類型使用時(shí)不需要導(dǎo)入包(import),基本數(shù)據(jù)類型、String、Map、List.當(dāng)然為了避免出錯(cuò),建議只要使用了,就導(dǎo)入包。

然后在服務(wù)端啟動(dòng)一個(gè)服務(wù)并注冊,編寫一個(gè)任意類實(shí)現(xiàn)AIDL文件生成的JAVA接口Stub!

最后在service里面實(shí)例化你的任意類并且在onBind(Intent a)方法上面返回你任意類的對象!

客戶端:

首先把你在服務(wù)端的aidl文件完整的復(fù)制過來一份,并且保證包名一樣

然后調(diào)用bindservice方法綁定你在服務(wù)端創(chuàng)建的方法mContext.bindService(intent, mServiceConnection, 0);

其中mServiceConnection是重點(diǎn):

private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {//連接上服務(wù)器時(shí)調(diào)用
mService = IRemoteService.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {//沒連上調(diào)用
mService = null;
}
};

其中mService就是服務(wù)端的aidl對象,我們可以通過它來給服務(wù)端的方法賦值

其中的傳的Intent要注意必須提供一個(gè)intent-filter來匹配請求是否合法,所以我們在客戶端訪問服務(wù)的時(shí)候,還必須傳遞包含了匹配action的Intent哦。

以上內(nèi)容是小編給大家介紹的Android Aidl 通訊機(jī)制 ,希望對大家有所幫助!

相關(guān)文章

最新評論