1.因爲是多進程通信,所以需要在AS中建立兩個Module,一個服務端,一個客戶端,項目結構如下
1.服務端module,其中主要包含了AIDL文件和Service文件,MainActivity文件默認不需要任何代碼
2.服務端的AIDL文件,當用戶牀架項目完成後在app出右鍵新建AIDL文件,會自動生成(2)的目錄結構,在IMyAidlInterface.aidl中,編寫客戶端需要調用服務端的方法(這裏只演示向List中添加字符串,所以沒有用到bean類,如果是對象數據的話需要實現Parcelable,序列化操作可自行百度),該步驟完成後需要執行Build-Make Project,用於在\app\build\generated\source\aidl\debug\com\example\ysg\aidldemo文件夾下生成服務端IMyAidlInterface.java文件,該文件是用來保證客戶端與服務端進行通信的
3.新建MyService繼承Service,新建IMyAidlInterface.Stub對象,重寫IMyAidlInterface.aidl中的方法,並進行相應的操作,然後在onBind方法中返回IMyAidlInterface.Stub對象即可
4.在服務端的AndroidManifest.xml文件中註冊服務
<service android:name=".MyService">
<intent-filter>
<action android:name="com.example.myservice"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</service>
服務端到此完成了,已經可以點擊運行了,不過因爲MainActivity中什麼都沒有,所以頁面空白,不過服務端已經啓動了,接下來進行客戶端的編寫5.在項目上新建module,生成appclient客戶端
6.將服務端的(2)步驟的整個aidl文件複製到application對應的main文件夾下,然後再次執行Build-Make Project生成客戶端IMyAidlInterface.java文件
7.在客戶端的Activity中編寫與服務器通信的代碼
此時可以運行客戶端,連接服務端,然後執行添加字符串和顯示的操作了
以上步驟中各個文件代碼如下
一、服務端步驟2用到的aidl文件
二、服務端步驟3用到的Service文件
三、客戶端步驟7用到的MainActivity文件