1. 程式人生 > >AIDL實現步驟及注意事項

AIDL實現步驟及注意事項

一、AIDL實現步驟

1、建立AIDL介面檔案,如果介面檔案中用到AIDL非預設支援的資料型別,那麼還要該資料型別還要先通過AIDL檔案定義。所以AIDL檔案可以分為兩類:一類為一類是用來定義parcelable物件,以供其他AIDL檔案使用AIDL中非預設支援的資料型別的。一類是用來定義方法介面,以供系統使用來完成跨程序通訊的。

2、在服務端中建立一個類(binder)繼承自ADIL介面中的Stub類並實現Stub中的抽象方法,然後再onbind()方法中返回這個類的物件;

3、在客戶端中建立ServiceConnection例項,在onServiceConnection()方法中可以獲得服務端返回的binder例項,接著通過bindService可以通過binder遠端訪問服務端中的實現AIDL檔案的方法;

二、注意事項

1、ADIL檔案所用到的自定義Parcelable物件必須要顯示import進來,不管這個自定義類是否和當前AIDL檔案在同一個包內; 2、如果AIDL檔案中用到Parcelable物件,必須新建一個和它同名的AIDL檔案,並在其中宣告它為Parcelable型別; 3、AIDL介面中只支援方法,不支援宣告靜態變數,這點還是有區別於傳統介面; 4、AIDL的包結構在服務端和客戶端要保持一致,因為客戶端要反序列化服務端中和AIDL相關的所有類,如果類的路徑不一致,無法成功反序列化; 5、客戶端呼叫遠端服務方法,同時客戶端執行緒會被掛起,如果服務端被呼叫的方法比較耗時,那麼就要避免在客戶端UI執行緒中訪問遠端方法;
6、由於服務端的方法在服務端的Binder執行緒池中執行,所以方法本身可以進行大量耗時操作,所以切記不要在服務端方法中開執行緒進行非同步任務;