I. aidldemoserver
Person. Java
package com.aidl.aidl;import android.os.Parcel;import android.os.Parcelable;public class Person implements Parcelable {private int id;private String name; public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}private Person(Parcel in){ id=in.readInt(); name=in.readString(); }public Person() {}public int describeContents() {return 0;}public void writeToParcel(Parcel out, int flags) {out.writeInt(id);out.writeString(name);}public static final Parcelable.Creator<Person> CREATOR=new Creator<Person>() {public Person[] newArray(int size) {return new Person[size];}public Person createFromParcel(Parcel in) {return new Person(in);}};}
Person. aidl
package com.aidl.aidl;parcelable Person;
Idownloadservice. aidl
package com.aidl.aidl;import com.aidl.aidl.Person;interface IDownloadService{ Person download();}
Downloadservice. Java
package com.aidl.server;import com.aidl.aidl.IDownloadService;import com.aidl.aidl.Person;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;public class DownloadService extends Service { private ServiceBinder serviceBinder=new ServiceBinder();@Overridepublic IBinder onBind(Intent intent) {return serviceBinder;}public class ServiceBinder extends IDownloadService.Stub{public Person download() throws RemoteException {Person p=new Person();p.setId(1);p.setName("scott");return p;}}}
Register downloadservice
<service android:name=".DownloadService" > <intent-filter > <action android:name="com.aidl.server.DownloadService" /> </intent-filter> </service>
Ii. aidldemoclient
Copy the com. aidl. aidl package in aidldemoserver.
Aidldemoclientactivity. Java
package com.aidl.client;import com.aidl.aidl.IDownloadService;import com.aidl.aidl.Person;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;public class AIDLDemoClientActivity extends Activity {private IDownloadService downloadService;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);this.bindService(new Intent("com.aidl.server.DownloadService"),serviceConnection, BIND_AUTO_CREATE);}private ServiceConnection serviceConnection = new ServiceConnection() {@Overridepublic void onServiceDisconnected(ComponentName name) {downloadService = null;}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {downloadService = IDownloadService.Stub.asInterface(service);try {Person p=downloadService.download();System.out.println("ID:"+p.getId());System.out.println("Name:"+p.getName());} catch (RemoteException e) {e.printStackTrace();}}};protected void onDestroy() {super.onDestroy();unbindService(serviceConnection);}}
Run aidldemoserver first and run aidldemoclient. The result is: