android 淺談Aidl 通訊機制

來源:互聯網
上載者:User

標籤:

服務端:

首先是編寫一個aidl檔案,注意AIDL只支援方法,不能定義靜態成員,並且方法也不能有類似public等的修飾符;AIDL運行方法有任何類型的參數和傳回值,在java的類型中,以下的類型使用時不需要匯入包(import),基礎資料型別 (Elementary Data Type)、String、Map、List.當然為了避免出錯,建議只要使用了,就匯入包。

然後在服務端啟動一個服務並註冊,編寫一個任意類實現AIDL檔案產生的JAVA介面Stub!

最後在service裡面執行個體化你的任意類並且在onBind(Intent a)方法上面返回你任意類的對象!

用戶端:

首先把你在服務端的aidl檔案完整的複製過來一份,並且保證包名一樣

然後調用bindservice方法綁定你在服務端建立的方法mContext.bindService(intent, mServiceConnection, 0);

其中mServiceConnection是重點:

private ServiceConnection mServiceConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName name, IBinder service) {//串連上伺服器時調用
mService = IRemoteService.Stub.asInterface(service);

}

@Override
public void onServiceDisconnected(ComponentName name) {//沒連上調用
mService = null;
}
};

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

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

 

android 淺談Aidl 通訊機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.