Android AIDL传递包含枚举的自定义类型

news/2024/5/11 3:34:39

AIDL使用过程中会遇到自定义类型的数据传输,自定义类型可能会包含枚举类型,使用错误,会出现各种错误:

E/JavaBinder: *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)java.lang.ArrayIndexOutOfBoundsException: length=8; index=3014765at com.Data.<init>(Data.java:96)at com.Data$1.createFromParcel(Data.java:116)at com.Data$1.createFromParcel(Data.java:113)at com.DataListener$Stub.onTransact(DataListener.java:65)at android.os.Binder.execTransactInternal(Binder.java:1154)at android.os.Binder.execTransact(Binder.java:1123)

整理了下使用枚举注意事项

  1. 定义枚举

     public enum CameraStatus {WORKING(0),CAMERA_FAILURE(1),UNRECOGNIZED(2);public static CameraStatus forNumber(int value) {switch (value) {case 0:return WORKING;case 1:return CAMERA_FAILURE;default:return UNRECOGNIZED;}}}
    
  2. 自定义类型添加枚举变量

     public class Data implements Parcelable {public Data () {}public int size;public boolean valid;public CameraStatus camera_status = CameraStatus.UNRECOGNIZED;}
    
  3. 修改writeToParcel和构造方法

    public void writeToParcel(Parcel dest, int flags) {dest.writeInt(size);dest.writeByte((byte) (valid? 1 : 0));dest.writeInt(camera_status.ordinal());}
    protected Data(Parcel in) {size= in.readInt();valid = in.readByte() != 0;camera_status = CameraStatus.values()[in.readInt()];
    

read和write顺序要对应上,不然会出问题。


http://wed.xjx100/news/301245.html

相关文章

第九章节 用Python实现常微分方程初值问题的数值解法

参考书籍&#xff1a;数值分析 第五版 李庆杨 王能超 易大义编 第9章 常微分方程初值问题的数值解法 文章声明&#xff1a;如有发现错误&#xff0c;欢迎批评指正 文章目录 欧拉法后退的欧拉方法梯形方法改进欧拉公式补充龙格—库塔方法线性多步法阿当姆斯显示与隐式公式 9.1引…

简单聊聊对象池及Apache Commons Pool的使用

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 最近在看rocketmq-exporter源码&#xff0c;发现了rocketmq-exporter在管理rocketmq-client使用了一个apache的三方库commons-pool&#xff0c;所以打算研究…

第六章 敏捷开发与配置管理-作业题-关于Git的题目

小图所在的某校信息学院有一位程老师&#xff0c;他对生命游戏特别感兴趣&#xff0c;正巧他看到小图最近在研究生命游戏。程老师想了一些生命游戏的新规则&#xff0c;他想检验一下那些规则是否有效&#xff0c;于是拍了拍小图的肩膀&#xff0c;语重心长地说&#xff1a;“生…

Java基础重点概要(部分)

为工信部第六届全国计算机信息大赛准备 &#xff0c;主要复习以下内容。 Java基础及环境&#xff1a;JDK发展历史&#xff0c;不同版本的进阶内容。Java程序的编写、编译、调试。 Java程序设计基础&#xff1a;常量和变量的概念&#xff0c;声明方式和作用域。基本数据类型的定…

华为OD机试真题 JavaScript 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

一、题目描述 跳房子&#xff0c;也叫跳飞机&#xff0c;是一种世界性的儿童游戏。 游戏参与者需要分多个回合按顺序跳到第1格直到房子的最后一格&#xff0c;然后获得一次选房子的机会&#xff0c;直到所有房子都被选完&#xff0c;房子最多的人获胜。 跳房子的过程中&…

使用Unity开发一个独立的区块链

Arouse Blockchain [Unity独立区块链] ❗️千万别被误导&#xff0c;上图内容虽然都在项目中可寻&#xff0c;但与目前区块链的业务代码关联不大&#xff0c;仅供宣传作用(总得放些图看着好看)。之所以有以上内容是项目有个目标功能是希望每个用户在区块链上都有一个独一无二的…

表级锁和行级锁

介绍 为什么有事务隔离性&#xff1f;因为要并发执行&#xff0c;数据安全性和一致性和并发效率问题 串行化&#xff1a;锁实现&#xff0c;没有并发性 用的多的是可重复读&#xff08;mysql&#xff09;和已提交读&#xff08;oracle&#xff09;&#xff0c;因为权衡了数据…

5、共享模型之内存

目录 5.1 Java的内存模型5.2 可见性1、退不出的循环2、解决办法&#xff1a;3、可见性 vs 原子性 5.3 有序性1、为什么会有指令重排2、如何禁止指令重排3、原理之volatile4、happens-before 5.1 Java的内存模型 JMM 即 Java Memory Model&#xff08;Java内存模型&#xff09;…