zoukankan      html  css  js  c++  java
  • Android中AIDL的使用

    AIDL(Android接口定义语言)
    ---------------------------------
    AIDL用于定义跨进程通信时需要使用到的接口,即当多个应用程序都需要使用到相关的接口时,应该使用AIDL来定义。
    【使用AIDL定义接口的步骤】
    1. 使用一般的创建interface的方式创建Java接口文件
    2. 将创建的interface的权限删掉,即例如public interface IMusicPlayer修改为interface IMusicPlayer
    3. 打开Windows的资源管理器,找到该接口文件,修改扩展名为aidl


    AIDL的数据类型
    ---------------------------------
    AIDL默认只识别:
    1. 基本数据类型,例如int、long、float、boolean等……
    2. String,CharSeqence
    3. List
    自定义数据类型:
    1. 自定义类,例如Music,并且实现Parcelable接口
    2. 添加自定义类的aidl文件,例如Music.aidl,在该文件中,只需要package语句,和parcelable 类名,例如parcelable Music,即可
    3. 在aidl接口文件中,显式的添加import语句,导入自定义的数据类型,例如import cn.tedu.ipc.Music,无论当前aidl接口文件与自定义类的aidl文件是否在同一个包中,都必须显式的导包
    4. 当跨进程访问时,访问者(客户端)需要将服务
    端的aild接口文件、实体类的java文件、实体类的aidl文件全部复制到客户端,并且,保证包名与服务器端是一致的


    Parcelable接口
    ---------------------------------
    实现步骤:
    1. 自定义类,例如Music,实现Parcelable接口
    2. 重写describeContents()方法,直接返回0即可
    3. 重写writeToParcel()方法,调用第1个Parcel类型的参数的write???系列方法,将当前类(Music)类的成员写出
    4. 自定义readFromParcel(Parcel src)方法,根据第3步骤中调用wite???系列的顺序,依次调用Parcel参数的read???系列方法,并为当前类(Music)的各个成员赋值
    5. 自定义当前类(Music)的带Parcel参数的构造方法,并在构造方法中调用readFromParcel()
    6. 声明public static final Parcelable.Creator<Music> CREATOR常量,并使用匿名内部类的语法直接赋值,在匿名内部类中,public Music[] newArray(int size)方法直接返回new Music[size]即可,public Music createFromParcel(Parcel src)中,直接返回通过构造方法创建对象即可。

  • 相关阅读:
    Aizu 0525 Osenbei 搜索 A
    PAT 1088 三人行 模拟,坑 C
    POJ1862 Stripies 贪心 B
    ZOJ 4109 Welcome Party 并查集+优先队列+bfs
    POJ 3685 Matrix
    POJ 3579 Median 二分加判断
    Educational Codeforces Round 63 D. Beautiful Array
    Codeforces Round #553 (Div. 2) C
    HDU 5289
    Codeforces 552 E. Two Teams
  • 原文地址:https://www.cnblogs.com/fighting9527/p/5245298.html
Copyright © 2011-2022 走看看