通常每個應用程式都在它自己的程序内運作,但有時需要在程序間傳遞對象,你可以通過應用程式UI的方式寫個運作在一個不同的程序中的service。在android平台中,一個程序通常不能通路其他程序中的記憶體區域。是以,他們需要把對象拆分成作業系統能了解的簡單形式,以便僞裝成對象跨越邊界通路。編寫這種僞裝代碼相當的枯燥乏味,好在android為我們提供了AIDL工具可以來做這件事。
AIDL(android接口描述語言)是一個IDL語言,它可以生成一段代碼,可以使在一個android裝置上運作的兩個程序使用内部通信程序進行互動。如果你需要在一個程序中(例如:在一個Activity中)通路另一個程序中(例如:一個Service)某個對象的方法,你就可以使用AIDL來生成這樣的代碼來僞裝傳遞各種參數。
要使用AIDL,Service需要以aidl檔案的方式提供服務接口,AIDL工具将生成一個相應的java接口,并且在生成的服務接口中包含一個功能調用的stub服務樁類。Service的實作類需要去繼承這個stub服務樁類。Service的onBind方法會傳回實作類的對象,之後你就可以使用它了,參見下例:
先建立一個IMyRemoteService.aidl檔案
<a></a>
如果你正在使用eclipse的Android插件,則它會根據這個aidl檔案生成一個Java接口類。生成的接口類中會有一個内部類Stub類,你要做的事就是去繼承該Stub類:
當用戶端應用連接配接到這個Service時,onServiceConnected方法将被調用,用戶端就可以獲得IBinder對象。參看下面的用戶端onServiceConnected方法:
本文轉自 一點點征服 部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/5216886.html,如需轉載請自行聯系原作者