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)中,直接返回通过构造方法创建对象即可。

时间: 2024-08-28 08:11:56

Android中AIDL的使用的相关文章

Android技术22:Android中AIDL

在Android中进程内部通过全局变量,文件,preference,数据库作为数据的载体实现数据共享和通信.然后在进程之间则需要借助Binder实现IPC调用.Android进程通信框架:服务端,客户端,Linux binder驱动.Binder驱动成为连接两端的桥梁.我们首先通过aidl语言实现一个简单的多进程通信.具体实现步骤如下: 1.定义aidl文件 IService.aidl,定义一个接口,test() ,不包含负责的类和数据. 1 package com.demo.ipc; 2 3

彻底明白Android中AIDL及其使用

1.为什么要有AIDL? 无论学什么东西,最先得弄明白为什么要有这个东西,不要说存在即是合理,存在肯定合理,但是你还是没有明白.对于AIDL有一些人的浅显概念就是,AIDL可以跨进程访问其他应用程序,和其他应用程序通讯,那我告诉你,很多技术都可以访问,如广播(应用A在AndroidManifest.xml中注册指定Action的广播)应用B发送指定Action的广播,A就能收到信息,这样也能看成不同应用之间完成了通讯(但是这种通讯是单向的):还如ContentProvider,通过URI接口暴露

Android中AIDL实现进程通信(附源码下载)

AIDL概述 之前的博客<Android中通过Messenger与Service实现进程间双向通信>演示了如何通过Messenger实现与Service进行跨进程通信,即IPC.但用Messenger实现的IPC存在一点不足:Service内部维护着一个Messenger,Messenger内部又维护着一个Hanlder,当多个client向该Service发送Message时,这些Message需要依次进入Hanlder的消息队列中,Hanlder只能处理完一个Message之后,再从消息队

Android中AIDL详解

欢迎转载,转载请注明出处http://blog.csdn.net/l664675249/article/details/50649676 介绍 Android Interface Definition Language (AIDL), Android接口定义语言.系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信Interprocess communication (IPC).AIDL就是解决这个问题的. 阅读本文需要了解Service的相关知识,关于Service的

Android 中 AIDL 的理解与使用

1.跨应用启动Service 设置启动Service的Intent serviceIntent = new Intent(); serviceIntent.setComponent(new ComponentName("com.example.startservicefromanotherapp", "com.example.startservicefromanotherapp.AppService")); com.example.startservicefroma

彻底明确Android中AIDL及其使用

1.为什么要有AIDL? 不管学什么东西,最先得弄明确为什么要有这个东西.不要说存在即是合理.存在肯定合理,可是你还是没有明确. 对于AIDL有一些人的浅显概念就是,AIDL能够跨进程訪问其它应用程序,和其它应用程序通讯,那我告诉你.非常多技术都能够訪问,如广播(应用A在AndroidManifest.xml中注冊指定Action的广播)应用B发送指定Action的广播,A就能收到信息,这样也能看成不同应用之间完毕了通讯(可是这样的通讯是单向的).还如ContentProvider,通过URI接

入门篇:10.Android中AIDL(安卓接口定义语言)跨应用操作Service

Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口.我们知道4个Android应用程序组件中的3个(Activity.BroadcastRec

Android中AIDL通信机制分析

一.背景 ·1.AIDL出现的原因 在android系统中,每一个程序都是运行在自己的进程中,进程之间无法进行通讯,为了在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界.通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作,实现IPC(进行间的通信)与J2e中的RMI类似. ·2.绑定service 我看了很多人都博客都没有说到这里,其实我个人感觉AIDL就是一个

Android 中AIDL的使用与理解

AIDL的使用: 最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧. 首先,我们就在AS里面新建一个aidl文件(ps:现在AS建aidl不要求和java包名相同了): package aidl; interface IMyInterface { String getInfor(String s); } 可以看到,在这里面我们就一个方法getInfor(String s),接受一个字符串参数,然后返回一个字符串,恩,相当的简单