aidl使用_Android进阶之AIDL如何使用自定义类型
如何在 AIDL 中使用自定義類型,具體步驟如下:
創(chuàng)建自定義類型
聲明自定義類型
定義與自定義類型相關(guān)的業(yè)務(wù)
重寫業(yè)務(wù)實體類
遠(yuǎn)程調(diào)用
驗證 AIDL
1. 創(chuàng)建自定義類型
自定義類型傳輸?shù)木褪且粋€實體對象,這個實體類必須實現(xiàn) Parcelable 接口,具體如下:
1// 自定義類型2public class Work implements Parcelable {3 ? ?private String title;4 ? ?private String content;5 ? ?// getter、setter、Parcelable 省略6}
2. 聲明自定義類型
創(chuàng)建一個 .aidl 文件聲明剛才定義的類型,注意與具體業(yè)務(wù) .aidl 文件的不同,聲明具體如下:
1// 在.aidl文件中聲明自定義類型2package com.manu.aidldemo;3parcelable Work;
3. 定義與自定義類型相關(guān)的業(yè)務(wù)
在定義具體業(yè)務(wù)的 .aidl 文件中定義與自定義類型相關(guān)的業(yè)務(wù),具體如下:
1// Declare any non-default types here with import statements2import com.manu.aidldemo.Work; //注意3interface IPersonAidlInterface {4 ? ?//定義與自定義類型相關(guān)的業(yè)務(wù)5 ? ?Work getWorkInfo();6 ? ?void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,7 ? ? ? ? ? ?double aDouble, String aString);8}
注意:導(dǎo)入自定義類型,否則不識別。
4. 重寫業(yè)務(wù)實體類
由于新增了具體業(yè)務(wù),也就是 getWorkInfo() ,需要具體業(yè)務(wù)類里面實現(xiàn)具體的業(yè)務(wù),具體如下:
1//新增自定義類型相關(guān)的業(yè)務(wù)2@Override3public Work getWorkInfo() throws RemoteException {4 ? ?Work work = new Work();5 ? ?work.setTitle("學(xué)習(xí)AIDL");6 ? ?work.setContent("Android developer");7 ? ?return work;8}
5. 遠(yuǎn)程調(diào)用
綁定 Service 成功之后會得到 IBinder 對象,然后通過 asInterface() 獲取到 IPersonAidlInterface 對象就可以調(diào)用了,具體如下:
1public void callRemoteClick(View view) { 2 ? ?Log.i(TAG,"遠(yuǎn)程調(diào)用具體服務(wù)..."); 3 ? ?try { 4 ? ? ? ?//遠(yuǎn)程調(diào)用 5 ? ? ? ?Work work = iPersonAidlInterface.getWorkInfo(); 6 ? ? ? ?System.out.println("這是遠(yuǎn)程調(diào)用的服務(wù)信息:title="+work.getTitle()+",content="+work.getContent()); 7 ? ?} catch (RemoteException e) { 8 ? ? ? ?e.printStackTrace(); 9 ? ?}10}
6. 驗證 AIDL
日志運行截圖如下:
使用流程實際上在上篇文章中已經(jīng)闡述清楚了,這篇貌似有點多余,不過算是對過去知識的總結(jié)吧!
最后推薦一下我的視頻號,每天分享各種知識,歡迎大家關(guān)注!---END---轉(zhuǎn)發(fā)至朋友圈,是絕對的真愛讓我知道你在看
總結(jié)
以上是生活随笔為你收集整理的aidl使用_Android进阶之AIDL如何使用自定义类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythonocc 扩展数据_如何在py
- 下一篇: android回收站目录详解,andro