本文參考:http://blog.csdn.net/fwt336/article/details/52587133
服務(wù)端編碼步驟
aidl描述:
AIDL (Android Interface Definition Language) 是一種IDL 語(yǔ)言膀曾,用于生成可以在Android設(shè)備上兩個(gè)進(jìn)程之間進(jìn)行進(jìn)程間通信(interprocess communication, IPC)的代碼粒梦。如果在一個(gè)進(jìn)程中(例如Activity)要調(diào)用另一個(gè)進(jìn)程中(例如Service)對(duì)象的操作,就可以使用AIDL生成可序列化的參數(shù)笋轨。
操作步驟
1.首先新建一個(gè)android項(xiàng)目
2.main文件夾右鍵選擇aidl步势,新建一個(gè)aidl文件国撵,本項(xiàng)目中文件名為IRemoteService嫂沉,IRemoteService.aidl中可以任意寫(xiě)幾個(gè)方法套媚,這步操作之后main文件夾下回多一個(gè)aidl目錄缚态,目錄中包名與java目錄中的包名一致磁椒。
3.點(diǎn)擊Build - Make Project堤瘤,等待執(zhí)行完成,查看app - build - generated - source - aidl - debug下是否生成IRemoteService.java文件浆熔,IRemoteService中有一個(gè)靜態(tài)抽象類 Stub本辐,Stub實(shí)現(xiàn)了IRemoteService接口,實(shí)現(xiàn)了IRemoteService.aidl中的所有方法医增,需要注意的是Stub中聲明了一個(gè)asInterface方法慎皱,這個(gè)方法接受一個(gè)Binder對(duì)象,并將其轉(zhuǎn)化成Stub對(duì)應(yīng)的接口對(duì)象(也就是這里的IRemoteService)并返回叶骨。
4.java目錄下新建一個(gè)javabean茫多,項(xiàng)目中命名為HelloMsg并實(shí)現(xiàn)Parcelable接口。
5.aidl與IRemoteService.aidl同目錄下新建HelloMsg.aidl文件忽刽,文件中只需要寫(xiě)入package 包名
天揖,parcelable HelloMsg
,注意:parcelable
的p
是小寫(xiě)跪帝。
6.再次Make Project今膊。
7.java目錄下新建一個(gè)service繼承Service,本項(xiàng)目中命名為RemoteService伞剑,聲明IRemoteService.Stub對(duì)象斑唬,重寫(xiě)onBind方法,用于向客戶端返回Binder對(duì)象,至此服務(wù)端代碼已經(jīng)編寫(xiě)完成恕刘,不要忘記在AndroidManifest加上service標(biāo)簽缤谎。
源代碼已上傳Github,歡迎star:
https://github.com/uiatnys/AIDLServiceDemo
最后
項(xiàng)目結(jié)構(gòu)如下所示







src.png
iremoteservice.png
iremoteservice_java.png
hellomsg.png
hellomsg_java.png
remoteservice.png