[Android] AIDL示例

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);



原文地址:https://www.cnblogs.com/lavieenrose/p/2437437.html