AIDL是Android的一種接口描述語言; 編譯器可以通過aidl文件生成一段代碼,通過預先定義的接口達到兩個進程內部通信進程的目的. 如果需要在一個Activity中, 訪問另一個Service中的某個對象, 需要先將對象轉化成 AIDL可識別的參數(可能是多個參數), 然後使用AIDL來傳遞這些參數, 在消息的接收端, 使用這些參數組裝成自己需要的對象。
AIDL RPC機制是通過接口來實現的,類似Windows中的COM或者Corba,但他是輕量級的,客戶端和被調用實現之間是通過代理模式實現的,代理類和被代理類實現同一個接口Ibinder接口。
下面是實現Activity訪問Service例子的步驟:
一.創建.aidl文件
AIDL使用簡單的語法來聲明接口,描述其方法以及方法的參數和返回值。這些參數和返回值可以是任何類型,甚至是其他AIDL生成的接口。重要的是必須導入導入除了內建類型(例如:int,boolean等)外的任何其他類型,哪怕是這些類型是在與接口相同的包中。具體的要求如下:
使用Eclipse的ADT插件創建一個BookInfo.aidl文件,該文件有4個方法:
setName(String name)設置圖書的書名,setPrice(int price)設置圖書的價格,setPublish(String pname)設置圖書的出版社和String display()顯示圖書的信息.
BookInfo.aidl文件
- package com.android.aidl;
- //BookInfo接口
- interface BookInfo{
- void setName(String name);
- void setPrice(int price);
- void ssetPublish(String pname);
- //顯示圖書的信息
- String display();
- }
創建好BookInfo.aidl文件,系統會自動在gen目錄下生成Java接口文件BookInfo.java
650) this.width=650;">