實(shí)現(xiàn)Android 接口方法介紹
我們認(rèn)為全球移動(dòng)用戶從中能獲得的潛在利益是值得付出這些努力的,如果你也是一個(gè)開發(fā)者,并對(duì)我們的想法感興趣,讓這些Android 接口變得更好,同時(shí)也將添加更有吸引力的特性、應(yīng)用和服務(wù)。
生成的接口包括一個(gè)名為Stub的內(nèi)部抽象類,該類聲明了你在aidl文件中聲明的所有方法。Stub也定義幾個(gè)有用的方法,最特別的是asInterface(),它執(zhí)行一個(gè)IBinder(在 applicationContext.bindService()執(zhí)行成功后傳給客戶端onServiceConnected()方法),并返回一個(gè)用來調(diào)用IPC方法的接口實(shí)例。更多細(xì)節(jié)請(qǐng)查看章節(jié)調(diào)用IPC方法。
- 1. 聲明一個(gè)接口類型的變量,該接口類型在.aidl文件中定義。
- 2.Implement ServiceConnection.
- 2. 實(shí)現(xiàn)ServiceConnection。
- 3.Call ApplicationContext.bindService(), passing in your ServiceConnection implementation.
- 3. 調(diào)用ApplicationContext.bindService(),并在ServiceConnection實(shí)現(xiàn)中進(jìn)行傳遞.
- 4.In your implementation of ServiceConnection.onServiceConnected(), you will receive an IBinder instance (called service).
- Call YourInterfaceName.Stub.asInterface((IBinder)service) to cast the returned parameter to YourInterface type.
- 4. 在ServiceConnection.onServiceConnected()實(shí)現(xiàn)中,你會(huì)接收一個(gè)IBinder實(shí)例(被調(diào)用的Service). 調(diào)用
- YourInterfaceName.Stub.asInterface((IBinder)service)將參數(shù)轉(zhuǎn)換為YourInterface類型。
- 5.Call the methods that you defined on your interface. You should always trap DeadObjectException exceptions, which are
- thrown when the connection has broken; this will be the only exception thrown by remote methods.
- 5. 調(diào)用接口中定義的方法。 你總會(huì)捕捉到DeadObjectException異常,該異常在連接斷開時(shí)被拋出。它只會(huì)被遠(yuǎn)程方法拋出。
- 6.To disconnect, call ApplicationContext.unbindService() with the instance of your interface.
- 6. 斷開連接,調(diào)用接口實(shí)例中的ApplicationContext.unbindService()
實(shí)現(xiàn)Android 接口,擴(kuò)展YourInterface.Stub,并實(shí)現(xiàn)方法成員。(你可以創(chuàng)建一個(gè)aidl文件并實(shí)現(xiàn)stub方法而不用綁定-AndRoid創(chuàng)建過程在java文件之前會(huì)處理aidl文件)。 現(xiàn)在你已完成了接口的實(shí)現(xiàn),你需要向客戶端公開該實(shí)現(xiàn)。
這就是我們所熟悉的"發(fā)布服務(wù)"。發(fā)布一個(gè)Service,然后繼承 Service并實(shí)現(xiàn)getBinder()返回一個(gè)實(shí)現(xiàn)的類的實(shí)例。下面是個(gè)Service的代碼片斷,該Service向客戶端公了 IRemoteService接口。
如果你有類需要通過Android 接口從一個(gè)進(jìn)程發(fā)送到另一個(gè),你必須確保類代碼可以被IPC接收端所使用。通常這意味著一開始你就要和service進(jìn)行通訊。, Android 作為谷歌企業(yè)戰(zhàn)略的重要組成部分。
將進(jìn)一步推進(jìn)“隨時(shí)隨地為每個(gè)人提供信息”這一企業(yè)目標(biāo)的實(shí)現(xiàn)。我們發(fā)現(xiàn),全球?yàn)閿?shù)眾多的移動(dòng)電話用戶從未使用過任何基于 Android 的電話。谷歌的目標(biāo)是讓(移動(dòng)通訊)不依賴于設(shè)備甚至平臺(tái)。
出于這個(gè)目的,Android 接口將補(bǔ)充,而不會(huì)替代谷歌長期以來奉行的移動(dòng)發(fā)展戰(zhàn)略:通過與全球各地的手機(jī)制造商和移動(dòng)運(yùn)營商結(jié)成合作伙伴,開發(fā)既有用又有吸引力的移動(dòng)服務(wù),并推廣這些產(chǎn)品。
開放手機(jī)聯(lián)盟的成立和 Android 的推出是對(duì)現(xiàn)狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,我們認(rèn)為全球移動(dòng)用戶從中能獲得的潛在利益是值得付出這些努力的。
如果你也是一個(gè)開發(fā)者,并對(duì)我們的想法感興趣,就請(qǐng)?jiān)俳o我們一星期的時(shí)間,屆時(shí)谷歌便能提供 SDK 了。如果你是一名移動(dòng)用戶,只需再等一段時(shí)間,我們的一些合作伙伴計(jì)劃在 2008 年下半年推出基于 Android 平臺(tái)的電話產(chǎn)品。
如果你已經(jīng)擁有一部你了解并喜愛的電話,請(qǐng)登錄 mobile.google.com ,確保你已經(jīng)安裝谷歌手機(jī)地圖、Gmail 以及其他一些專為你的手機(jī)開發(fā)的精彩應(yīng)用。谷歌將繼續(xù)努力,讓這些服務(wù)變得更好,同時(shí)也將添加更有吸引力的特性、應(yīng)用和服務(wù)。
【編輯推薦】