91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.10M
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2021-02-01
  • 標簽: AIDL??

資源簡介

aidl跨進程調用

這兩天在學習aidl跨進程調用,研究了一天終于寫出了個helloword。。做下記錄吧。

根據官方提供的指南,開發aidl跨進程調用,主要分以下步驟:
1.         創建.aidl文件-該文件(YourInterface.aidl)定義了客戶端可用的方法和數據的接口。
2.         在makefile文件中加入.aidl文件-(Eclipse中的ADT插件提供管理功能)Android包括名為AIDL的編譯器,位于tools/文件夾。
3.         實現接口-AIDL編譯器從AIDL接口文件中利用Java語言創建接口,該接口有一個繼承的命名為Stub的內部抽象類(并且實現了一些IPC調用的附加方法),要做的就是創建一個繼承YourInterface.Stub的類并且實現在.aidl文件中聲明的方法。
4.         向客戶端公開接口-如果是編寫服務,應該繼承Service并且重載Service.onBind(Intent) 以返回實現了接口的對象實例

上面的東西真的很官方。。下面結合我的例子做一下學習總結:
先開發服務器端
1.創建一個aidl文件,可以看提供的源碼。創建完成后,eclipse插件自動在gen目錄下生成同名字的java文件。里面包含一個Stub抽象類,這個類繼承自android.os.Binder,這個類是實現整個遠程調用的核心。
2.然后創建一個類來繼承上面說到的那個Stub抽象類,實現里面的抽象方法。(這些抽象方法是根據aidl文件自動生成的)。
3.創建一個自定義Service繼承自Service,實現其onBind方法,注意此onBind方法必須返回第二步創建的那個Stub類的子類。然后在xml中聲明此service,注意此service的聲明必須包含一個action,此action也用于客戶端的調用使用。(在下面的客戶端開發中會有介紹)。
4.創建一個activity,此activity只要實現把service啟動了即可。
這樣服務器端就開發完畢,運行后啟動了一個可供遠程調用的service。關鍵還是通過onBind暴露一個Binder給客戶端。Binder哪來呢?就是通過aidl文件adt會自動生成一個抽象類Stub繼承自Binder,只需要創建一個類實現這個Stub的抽象方法即可。

然后開發客戶端:
1.客戶端也需要一個aidl文件,注意客戶端的aidl文件的包名必須和服務器端的aidl包名一致,名字也相同。創建完后同樣會在gen下生成一個接口。
2.創建一個Activity,包含變量ServiceConnection con,實現其onServiceConnected和onServiceDisconnected方法,onServiceConnected方法生成第一步那個接口的實現類的對象。con對象用于在onCreate中綁定service,這個service的action必須為服務器端聲明的那個service的配置action。綁定中用到con會執行onServiceConnected方法生成aidl對象iPerson。然后就可以通過iPerson來調用aidl里的任意方法返回服務器的東西。
客戶端開發完畢。關鍵點是創建aidl文件自動生成了一個接口,在activity中必須綁定服務程序開啟的service,在綁定過程中初始化aidl對象。然后就可用aidl對象調用任意方法了。

OK,可以運行看效果了。過程真的很繁瑣。。但是好像也只能這樣了。最主要的還是服務端onBind暴露,然后客戶端bindService得到aidl對象。

資源截圖

代碼片段和文件信息

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2425??2012-07-04?15:20??aidl跨進程調用\aidl跨進程調用.txt

?????文件?????128808??2012-07-04?15:20??aidl跨進程調用\remote.zip

?????目錄??????????0??2012-07-04?15:21??aidl跨進程調用

-----------?---------??----------?-----??----

???????????????131233????????????????????3


評論

共有 條評論