为了账号安全,请及时绑定邮箱和手机立即绑定

Android进阶AIDL使用自定义类型

标签:
Android

阅读本篇文章之前,请先阅读 Android进阶之AIDL的使用详解 这篇文章,上一篇
中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具体步骤如下:

  1. 创建自定义类型

  2. 声明自定义类型

  3. 定义与自定义类型相关的业务

  4. 重写业务实体类

  5. 远程调用

  6. 验证 AIDL

1. 创建自定义类型

自定义类型传输的就是一个实体对象,这个实体类必须实现 Parcelable 接口,具体如下:

// 自定义类型public class Work implements Parcelable {    private String title;    private String content;    // getter、setter、Parcelable 省略}

2. 声明自定义类型

创建一个 .aidl 文件声明刚才定义的类型,注意与具体业务 .aidl 文件的不同,声明具体如下:

// 在.aidl文件中声明自定义类型package com.manu.aidldemo;
parcelable Work;

3. 定义与自定义类型相关的业务

在定义具体业务的 .aidl 文件中定义与自定义类型相关的业务,具体如下:

// Declare any non-default types here with import statementsimport com.manu.aidldemo.Work; //注意interface IPersonAidlInterface {    //定义与自定义类型相关的业务
    Work getWorkInfo();    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,            double aDouble, String aString);
}

注意:导入自定义类型,否则不识别。

4. 重写业务实体类

由于新增了具体业务,也就是 getWorkInfo() ,需要具体业务类里面实现具体的业务,具体如下:

//新增自定义类型相关的业务@Overridepublic Work getWorkInfo() throws RemoteException {
    Work work = new Work();
    work.setTitle("学习AIDL");
    work.setContent("Android developer");    return work;
}

5. 远程调用

绑定 Service 成功之后会得到 IBinder 对象,然后通过 asInterface() 获取到 IPersonAidlInterface 对象就可以调用了,具体如下:

public void callRemoteClick(View view) {
    Log.i(TAG,"远程调用具体服务...");    try {        //远程调用
        Work work = iPersonAidlInterface.getWorkInfo();
        System.out.println("这是远程调用的服务信息:title="+work.getTitle()+",content="+work.getContent());
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

6. 验证 AIDL

日志运行截图如下:

AIDL自定义类型.png

使用流程实际上在上篇文章中已经阐述清楚了,这篇貌似有点多余,不过算是对过去知识的总结吧!

原文链接:http://www.apkbus.com/blog-907060-78315.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消