AIDL 服务只支持有限的数据类型(转)

简介: AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,  AIDL 服务支持的数据类型如下:1. Java 的原生类型2. String 和CharSequence3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型;  以上三种类型都不需要导入(import)4. AIDL 自动生成的接口  需要导入(import)5. 实现android.os.Parcelable 接口的类.  需要导入(import)。

AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,  AIDL 服务支持的数据类型如下:
1. Java 的原生类型
2. String 和CharSequence
3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型;  以上三种类型都不需要导入(import)
4. AIDL 自动生成的接口  需要导入(import)
5. 实现android.os.Parcelable 接口的类.  需要导入(import)。 

要传递一个需要import 的数据类型的值(如: 实现Parcelable接口的类),除了要建立一个实现Parcelable 接口的类外, 还需要为这个类单独建立一个aidl 文件, 并使用parcelable 关键字进行定义.

一. 服务器端

具体步骤如下:

1.  建立一个IMyService.aidl 文件,代码如下:

package net .blogjava.mobile.complex.type.aidl;

import  net.blogjava.mobile.complex.type.aidl.Produce;

interface  IMyService  {

     Map  getMap(in String  country,  in  Product  product);

     Product  getProduct();

}

注意:   如果方法参数的类型不是原生类型,如String,List或自定义实体类,需要使用in、 out或 inout 修饰,in表示这个值被客户端设置; out  表示这个值被服务端设置,inout 表示这个值既被客户端设置,又被服务端设置.

2. 编写 Product  类,该类是用于传递的数据类型,它实现了Parcelable接口,用于序列化对象,之所以不用java.io.Serializable 接口,是因为Serializable 接口序列化的效率没有Parcelable接口高

(1)  在Product 类中必须有一个静态常量,常量名必须为CREATOR,而且CREATOR 常量的数据类型必须是Parcelable.Creator

(2) 在writeToParcel 方法中需要将要序列化的值写入 Parcel 对象

3.  建立一个Product.aidl 文件,代码: parcelable Product;

4.  编写一个MyService类

5.  在AndroidManifest.xml文件中配置MyService 类,代码:

<service android:name=".MyService">

     <intent-filter><action  android:name="net.blogjava.mobile.complex.type.aidl.IMyService" /></intent-filter>

</service>

二.客户端

首先将IMyService.java和Product.java文件复制到客户端工程(ch08_complextypeaidlclient),然后绑定AIDL服务,并获得AIDL服务对象,最后调用AIDL 服务的方法

 

http://blog.csdn.net/aduovip/article/details/6703516 原文

目录
相关文章
|
1月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
6月前
|
存储 设计模式 编译器
详解Go语言类型与接口关系:从原理到应用全解密
详解Go语言类型与接口关系:从原理到应用全解密
41 0
|
17天前
|
存储 编译器 Linux
解析编程中不可或缺的基础:深入了解结构体类型
解析编程中不可或缺的基础:深入了解结构体类型
32 1
|
前端开发 程序员 C#
【C#】通过扩展对象的方式,对字符串等数据类型进行数据进一步处理
在本篇文章中,我们讲一起了解下对象扩展的使用 在实际项目开发中,对象扩展使用的场景还是挺多的,比如:需要对时间值进行再处理,或者字符串中的斜杠(/)转为反斜杠(\)
90 0
|
IDE Java 开发工具
Python语言应该加上块标识(开始、结束)的特性
Python语言应该加上块标识(开始、结束)的特性
78 0
|
编译器
由编译器特别支持的包装
由编译器特别支持的包装
44 0
|
开发框架 JSON 数据库
FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
|
数据中心
详谈10G XFP万兆光模块有哪些类型?
10G XFP万兆光模块分为XFP单纤光模块、XFP双纤光模块、XFP CWDM/DWDM光模块,今天易天光通信ETU-LINK分别给大家详细介绍这几种产品的规格参数。 10G XFP 双纤光模块参数 应用场景 10G XFP 单纤光模块参数 10G XFP CWDM/DWDM光模块参数 应用场景: 随着网络的快速发展,10G网络技术非常成熟,常见的10G光模块有SFP+系列、XFP系列、X2系列、Xenpak系列。
790 0
|
Go
Go语言中的类型和接口及方法的关系
朦着用了这么久, 概念一直不是很清楚, 经过这一轮的学习, 应该在大脑里可以进入深层记忆了吧。
1303 0