1. 定义实体
package ai.serv;
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable {
private String name;
private int age;
private String telNumber;
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(telNumber);
dest.writeInt(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getTelNumber() {
return telNumber;
}
public void setTelNumber(String telNumber) {
this.telNumber = telNumber;
}
public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {
@Override
public Person createFromParcel(Parcel source) {
return new Person();
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
}
package ai.serv;
parcelable Person;
2. 定义接口
package ai.serv;
import ai.serv.Person;
interface IAIDLServer {
void savePersonInfo(in Person person);
List<Person> getAllPerson();
}
3. Service端接口实现
ArrayList<Person> persons = new ArrayList<Person>(10);
final IAIDLServer.Stub mBinder = new IAIDLServer.Stub() {
@Override
public void savePersonInfo(Person person) throws RemoteException {
if (person != null) {
persons.add(person);
}
}
@Override
public List<Person> getAllPerson() throws RemoteException {
return persons;
}
};
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
4. 客户端实现
IAIDLServer mServer = null;
ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
if (mServer != null) {
mServer = null;
}
Toast.makeText(AIDLClentA.this, "Disconnected", Toast.LENGTH_SHORT).show();
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mServer = IAIDLServer.Stub.asInterface(service);
Toast.makeText(AIDLClentA.this, "Connected", Toast.LENGTH_SHORT).show();
}
};
5. 客户端连接、断开
bindService(new Intent(IAIDLServer.class.getName()), connection, BIND_AUTO_CREATE);
unbindService(connection);