android之Service介紹之三 AIDL與傳遞對象

除了上一篇文章我們提到的通過service提供音樂播放等類似的服務之外,我們還可以通過service將對象傳遞回來哦,你知道怎麼用嗎,先看例子:

當我們點擊“獲取”時,會從另一個線程的service中獲取一個對象,然後將裏面的內容讀出來。

--------------------------------------------------------------------------------------------

對於aidl實現以對象的方式交互。主要步驟如下:

 

 

服務端:

第一:定義一個實體類,這裏是Beauty,定義一個服務接口aidl文件RemoteBeauty.aidl,這裏有一點需要注意,我們引用自定義的實體類到aidl中時需要通過import導入包,但是你會發現,即使你導入了包,還是提示找不到,這時候,你要做的是,建一個以實體類名稱命名的aidl文件,如Beauty.aidl,在裏面添加一句pracelable Beauty。

第二:開始編寫Beauty,這裏一定要注意,它一定要實現Pracelable接口,該接口是一個序列化的接口,功能和serializable相似,但是功能更加的迅速。此外,在該Beauty內部一定要聲明一個public static final Pracelable.Creator<T>CREATOR對象!!除了裏面的那個T代表實體類之外,其他的都不準改變哦。

 

第三:在androidManifest.xml中註冊service。並定義好訪問該service的action字符串。

 

 

客戶端:

客戶端這邊相應的要簡單很多,但是要注意的一點是,要將實體類還有aidl文件都拷貝過來哦,而且要保證路徑完全一致!!

 

-------------------------------------------------------------

代碼示例:

服務端:

 

Beauty.java

 

 

 

RemoteService.java

ServiceActivity.java

Beauty.aidl

RemoteBeauty.aidl

manifest.xml

-------------------------------------

客戶端:

ClientActivity.java

另外Beauty.java 以及RemoteBeauty.aidl都是從服務端系統中拷貝過來的哦。

 

 

 如果你想你的service在系統開機時自啓動。可以在service的androidManifest.xml中加上這樣的配置。

<receiver android:name=".StartBroadcastReceiver">

 

            <intent-filter>

   <action android:name="android.intent.action.BOOT_COMPLETED"/>

            </intent-filter>        

</receiver>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章