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 原文

目录
相关文章
|
7月前
|
存储 缓存 自然语言处理
浏览量超 10w 的热图,描述 RAG 的主流架构
大模型性能的持续提升,进一步挖掘了 RAG 的潜力,RAG 将检索系统与生成模型相结合,带来诸多优势,如实时更新知识、降低成本等。点击本文,为您梳理 RAG 的基本信息,并介绍提升大模型生成结果的方法,快一起看看吧~
708 109
|
5月前
|
机器学习/深度学习 存储 运维
深度学习如何让“运维知识库”从“聪明”到“智慧”
深度学习如何让“运维知识库”从“聪明”到“智慧”
169 18
|
10月前
|
安全 机器人 开发者
清华开源全球最大双臂机器人扩散大模型RDT,懂调酒能遛狗,登顶HF具身热榜
清华大学近期发布了全球最大的双臂机器人扩散大模型RDT,该模型在调酒、遛狗等任务上表现优异,登顶Hugging Face具身智能热榜。RDT采用扩散架构,具备强大的学习能力,能生成高质量的机器人动作序列,展示了清华在机器人技术领域的领先水平。尽管面临泛化能力、计算资源及安全性等挑战,RDT的开源特性仍为其广泛应用和发展提供了广阔前景。
331 8
|
存储 人工智能 开发框架
蚂蚁集团开源项目 DB-GPT 和 VSAG 惊艳亮相,引领 AI 数据革命!
9月5日,在2024 Inclusion·外滩大会“从DATA for AI到AI for DATA”见解论坛上,由蚂蚁集团发起的,旨在提高数据库与大模型应用开发效率的“星辰智能社区”新发布了两个项目:AI原生数据应用开发框架DB-GPT新版本与向量索引库VSAG。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
这篇文章介绍了如何使用Ant Design Vue UI框架创建一个简单的后台管理模板,包括创建Vue项目、安装和使用ant-design-vue、以及编写后台管理通用页面的代码和样式。
Ant Design Vue UI框架的基础使用,及通用后台管理模板的小demo【简单】
|
机器学习/深度学习 安全 物联网
智能时代下的数据安全:挑战与对策
本文深入探讨了在快速发展的信息技术背景下,数据安全面临的新挑战及应对策略。文章首先分析了当前数据泄露和滥用的风险,随后提出了一系列针对性的技术和管理措施,旨在增强个人和企业的数据防护能力。通过案例分析,本文揭示了数据保护的最佳实践,并对未来数据安全技术的发展方向进行了展望。
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
500 12
|
Android开发 Kotlin
安卓Jetpack Compose+Kotlin, 使用ExoPlayer播放多个【本地】音频,播放完随机播放下一首,遇到播放错误,也自动播放下一首
使用Kotlin和Jetpack Compose开发的安卓应用中,实现了两个EvoPlayer同时播放res/raw目录下的音频。一个音轨播放人声(顺序播放),另一个播放背景音乐(随机播放)。每个音轨都有独立的播放和停止控制,且在播放结束或遇到错误时会自动切换到下一首。MediaPlayer置于ViewModel中,UI界面包含播放和停止按钮,控制两个音轨。每次切换音频前,还会随机调整播放速度在0.9到1.2之间。代码示例展示了如何创建ViewModel和UI以实现这一功能。
|
存储 索引
软考--操作系统之文件系统多级索引
软考--操作系统之文件系统多级索引