zoukankan      html  css  js  c++  java
  • [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);



  • 相关阅读:
    vue如何将单页面改造成多页面应用
    css3动画基础详解(@keyframes和animation)
    《css揭秘》下(伪元素,文字背景,垂直居中技巧,文字环绕)
    Wavesurfer.js音频播放器插件的使用教程
    《CSS3揭秘》上(边框,投影,渐变,条纹效果,蚂蚁行军)
    复活hexo静态博客的方法
    基于svg.js实现对图形的拖拽、选择和编辑操作
    js 常用的工具函数
    linux 新机器的配置(git + nodejs+ mongodb)
    vue 不常见操作
  • 原文地址:https://www.cnblogs.com/lavieenrose/p/2437437.html
Copyright © 2011-2022 走看看