首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓: AIDL,为什么List<String>能用,而List<Integer>不行?

安卓中的AIDL(Android Interface Definition Language)是一种用于实现跨进程通信的机制。它允许不同的应用程序之间通过接口进行通信,以便共享数据和调用远程方法。

在AIDL中,List<String>可以被正常传递和使用,而List<Integer>不能直接传递。这是因为AIDL使用了基于Binder的IPC(Inter-Process Communication)机制,而Binder在跨进程通信时需要进行数据的序列化和反序列化。

List<String>中的元素是String类型,而String类型是Java中的基本类型之一,它实现了Parcelable接口,可以被AIDL进行序列化和反序列化。因此,List<String>可以被AIDL正常处理。

相比之下,List<Integer>中的元素是Integer类型,Integer类型也是Java中的基本类型之一。然而,Integer类型并没有实现Parcelable接口,因此无法被AIDL直接序列化和反序列化。这就导致了List<Integer>不能直接传递。

解决这个问题的方法是,可以将List<Integer>转换为int[]数组进行传递。int[]数组是Java的基本类型数组,可以被AIDL正常处理。在接收方,再将int[]数组转换回List<Integer>进行使用。

总结起来,List<String>能够在AIDL中正常传递和使用,是因为String类型实现了Parcelable接口,可以被AIDL序列化和反序列化。而List<Integer>不能直接传递,因为Integer类型没有实现Parcelable接口。解决方法是将List<Integer>转换为int[]数组进行传递。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

官方老爹之痛:为什么苹果能收到推送,而安卓不行?

我们在 iOS 设备杀掉进程后能收到推送,而 Android 设备却不行。这个问题可困惑了小树很长时间,这天趁着工作清闲,又跑到小黑工位上请教了。...但这貌似还没回答之前的问题呢,为什么 iOS 设备在 App 进程被杀掉时能收到推送,而 Android 设备却不行呢? 小伙子果然穷追不舍,我这不是还没讲完嘛,别着急啊。小黑淡定地说。...所以,安卓设备就无法收到推送了。...公司前阵子组织了开发团队里的开发精英,埋头干了2个月,终于搞出一个能用的推送服务了。 小树听到异常欣喜,觉得又有东西可以学习了。 不过今天还是不说那么多了吧,怕你学太多吸收不了。...《官方老爹之痛:为什么苹果能收到推送,而安卓不行?》

98380

Android AIDL 跨进程通信

安卓 IPC 跨进程通信有很多种方式,我们可以用 Bundle传递数据,通过 Intent 意图去打电话,在 Uri 里面传递电话号码 //手动拨号将Intent.ACTION_CALL改为Intent.ACTION_DIAL...如果我们在 AIDL 中需要传递自定义数据类型,那就必须有一个实现序列化的实体类,基本数据类型除了 Short 外,AIDL 都支持,List、Map也同样支持,前提是他们装载的元素是 AIDL 支持的...; public class Book implements Parcelable { private String name; public String getName() {...(android.os.Process.myPid()); return binder; } } 这里我偷懒了一下,没有新建两个安卓工程,只是把这个 Service 设置到另一个进程运行...服务端依然会自己实例化一个空对象(里面的参数没有值而已) inout 这个修饰符有争议,很多博客上写当服务端修改客户端传递的数据后会把这个修改同步到移动端,但是经过我的反复测试,数据是不会同步的,查阅了安卓官方文档

47530
  • 重学Java之泛型的基本使用

    }}复制代码我当时回答的时候是将Integer和int当做不同的类型来思考的,我回答的是可以,但是我的朋友说,这是不行的。...我们在来看下软件兼容,以安卓软件为例,每年都在发大版本,但是安卓手机现在的版本就是什么样的都有,2023年最新的安卓版本是13,但我手机的安卓版本是安卓11,那我去应用市场下载软件的时候,丝毫不考虑下载的软件是否能正常运行...举一个例子来说,Android11的存储权限变更导致APP无法访问根目录文件,但是为了让为安卓11开发的软件能够跑在低版本的安卓上,这就要求开发者向前兼容。...所以ArrayListString>是ListString>的一个子类型,而ListString>是CollectionString>的一个子类型。...ListString>的子类型:PayloadListString,String>PayloadListString,Integer>PayloadListString,Exception>通配符

    37610

    Android 进阶7:进程通信之 AIDL 的使用

    去年看《安卓开发艺术探索》时也学了这部分内容,但是可能当时水平不够,或者只是看起来努力,没有真正理解精髓,没多久就又忘了个七八成。 这次复习,还是老老实实敲出来,总结成文字吧,方便以后回顾。...AIDL 支持的数据类型 共 4 种: Java 的基本数据类型 List 和 Map 元素必须是 AIDL 支持的数据类型 Server 端具体的类里则必须是 ArrayList 或者 HashMap...mName; public Person(String name) { mName = name; } protected Person(Parcel in...MyAidlService onBind"); return mIBinder; } } 上面的代码中,创建的对象是一个 IMyAidl.Stub() ,它是一个 Binder,具体为什么是它我们下篇文章介绍...到最后虽然跨进程通信成功,但是我们还是有很多疑问的,比如: AIDL 生成的文件内容? 什么是 Binder? 为什么要这么写?

    1.1K80

    笔记——IPC跨进程通信(九)

    《个人平时笔记,看到的同学欢迎指正错误》 1、安卓它是一种基于Linux内核的移动操作系统。Linux上可以通过命名管道、共享内存、信号量等来进行进程间通信。...而安卓有自己的一套跨进程通信的实现方式,如下: <1.使用Binder <2.Bundle绑定数据后通过intent启动另一进程的组件传递数据 而管道、消息队列、Socket都需要2次,共享内存方式一次内存拷贝都不需要,但实现方式又比较复杂。...Binder主要用在Service中,包括AIDL和Messenger,而Messenger底层其实是AIDL,AIDL又是用Binder。...而Parcelable是Android中的序列化方式,因此更适合用在Android平台上,虽然它使用起来稍微麻烦点,但是它的效率很高。

    62650

    记近一个礼拜的面试

    第一家公司,租房类,10k-13k(以下所有公司名字省略) 1、组件化怎么做的 2、热修复原理 3、增量更新原理 4、安卓性能优化 5、设计模式、架构模式MVP MVVM 后面还上机做了一个东西,给一个设计图...,两个小时内尽量高还原度,一天后收到复试谈工资,婉拒了没有去,公司比较小,非技术型公司,然后技术氛围不行 第二家公司,做电视机顶盒,10k-20k 上来先做了一套笔试题,大概一些Java和Android...做校园支付类10k-15K 1、性能优化 2、设计模式 3、架构模式 4、EventBus原理 5、热修复原理 6、OkHttp拦截器原理 7、增量更新原理 谈了工资,要15K,后面那个主管说不单单负责安卓还要求会...下载一下给我看下,下雨天坐四十分钟地铁去面试,技术面试也没有,然后问了我上家公司的薪资,通知下个礼拜复试,还让我打印银行流水跟五险一金,最后走了都没有倒一杯水,两家非常低素质的公司,最基本的礼貌都没有,深圳的安卓市场确实不太好了...,基本凉凉,要求很多很高,工资偏偏还不高,可能是寒冬吧,各位安卓,且行且珍惜,慎重离职,我是被上家公司欠薪才无奈离职的。

    42620

    安卓第七夜 雅典学院

    安卓带有SQLite数据库,它是一个简单版本的关系型数据库,可以应对更复杂的数据存取需求。我将在这里说明安卓中该数据库的使用方法。...这里只专注于安卓中SQLite数据库的接口使用,并没有深入关系型数据库和SQL语言的背景知识。 《雅典学院》是拉斐尔的画。他在这幅壁画中描绘了许多古典时代的哲学家,如苏格拉底、柏拉图、亚里士多德等。...相关的安卓知识点包括: 使用SQLite数据库。 使用adb命令行工具查看数据库。 在这一讲中的新增代码,都将放入到me.vamei.vamei.model包中。...adb查看数据库 adb是安卓提供的命令行工具。你可以在计算机上使用该命令行,查看安卓设备中的SQLite数据库。...首先,查看连接在计算机上的安卓设备: adb devices -l 该命令会列出所有的设备及其端口。

    1.3K80

    Android:远程服务Service(含AIDL & IPC讲解)

    远程服务与本地服务的区别 远程服务与本地服务最大的区别是:远程Service与调用者不在同一个进程里(即远程Service是运行在另外一个进程);而本地服务则是与调用者运行在同一个进程里 二者区别的详细区别如下图...在新建AIDL文件里定义Service需要与Activity进行通信的内容(方法),并进行编译(Make Project) // 在新建的AIDL_Service1.aidl里声明需要与Activity...String 和CharSequence //3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型; //4....extends Service { // 实例化AIDL的Stub类(Binder的子类) AIDL_Service1.Stub mBinder = new AIDL_Service1...总结 本文对Android组件Service中的远程Service进行了全面介绍 接下来会介绍继续介绍Android开发中的相关知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 ----

    2.4K50

    Android点将台:绝命暗杀官

    估计很多新手都有一个疑问,我直接在Activity中new 一个MediaPlayer多好 为什么非要通过Service来绕一圈得到MediaPlayer对象呢?...今天在Service里,玩了半天音乐也没停 四、安卓接口定义语言aidl在Service中的使用 这个服务端有点弱,现在想办法让外部也能用它 不知道下图你里看出了什么,我看的挺兴奋,前几天看framework...只不过书写的语法稍稍不同,下面是IMusicPlayerService的aidl 写完后记得点小锤子,他会使用sdk\build-tools\28.0.3\aidl.exe生成代码 // IMusicPlayerService.aidl...估计很多新手都有一个疑问,我直接在Activity中new 一个MediaPlayer多好 为什么非要通过Service来绕一圈得到MediaPlayer对象呢?...今天在Service里,玩了半天音乐也没停 四、安卓接口定义语言aidl在Service中的使用 这个服务端有点弱,现在想办法让外部也能用它 不知道下图你里看出了什么,我看的挺兴奋,前几天看framework

    17010

    面试一线互联网公司Android中高级开发工程师必问面试题集锦

    前言 今天我们说说中高级安卓开发工程师岗位在大公司应聘中的复习方向: 用人单位对中高级安卓开发工程师方面的要求 安卓已经火了这么多年了。现在如果还从事安卓开发,基本上都是中高级安卓开发工程师。...那么用人单位在对中高级安卓开发工程师方面的要求要达到什么程度呢? 在回答这个问题之前,我先说一下中高级安卓开发工程师的薪资水平吧。至于为什么,先说这个。因为我怕接下来你没有动力去看,去学习,去提高。...贝壳,汽车之家,这些中高级安卓开发工程师的薪资范围是30K-50K,并且有可能达到14薪。...3.是否使用过intentServer,作用是什么,AIDL解决了什么问题?(小米) 4.Activity、Window、View三者的差别,fragment的特点?...Android Glide源码解析 32.Android 设计模式 33.架构设计(搜狐) 34.Android属性动画特性(乐视、小米) 总结 目前想换一个18K以上,尤其是想拿到25K以上的;想从一个初级安卓开发工程师进阶到中高级安卓开发的

    2.3K40

    2019预备BAT大厂Android研发岗秋招必问30+道高级面试题(附详细答案解析)

    如今安卓开发不像前几年那么热门,但是高级人才依然紧缺,大家看着这句话是不是很熟悉,因为 web 高级人才也紧缺,c++ 高级人才一样紧缺,那么到了人工智能时代,人工智能时代的高级人才也同样会紧缺!...似乎是高级人才的人在其他领域也是高级人才,而不是因为选择了热门才会一帆风顺。...文末有免费福利哦 网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了如下安卓开发高级工程师面试题以及答案帮助大家顺利进阶为高级工程师,目前我就职于某大厂安卓高级工程师职位...,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分会是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来,大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚...参数: java原生参数 String parcelable list & map 元素 需要支持AIDL 16.Handler 机制 参考:android 进程/线程管理(一)----消息机制的框架

    1K31

    Android AIDL 教程 (一)—— 简单的示例

    List List 中的所有元素都必须是以上列表中支持的数据类型、其他 AIDL 生成的接口或您声明的可打包类型。...可选择将 List 用作“通用”类(例如,List)。另一端实际接收的具体类始终是 ArrayList,但生成的方法使用的是 List 接口。...Map 实现 Parceable 的自定义类型 注意事项 在 aidl 文件中,除了 Java 编程语言中的所有原语类型、String、CharSequence、List、Map,其他在 AIDL 文件中用到的类...这样做法当然不行,既然双方都可以修改,那系统的开销肯定会比较大。就好比管道一样。.... */ void connect(String mes); void disConnect(String mes); } 这个 aidl 文件很接口,只有两个方法,connect

    1.5K20

    最全的BAT大厂面试题整理

    (一) java基础面试知识点 java中==和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别 谈谈对java多态的理解 String、StringBuffer...静态内部类的设计意图 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 谈谈对kotlin的理解 闭包和局部内部类的区别 string 转换成 integer的方式及原理 (二)...说说你对Java反射的理解 说说你对Java注解的理解 说说你对依赖注入的理解 说一下泛型原理,并举例说明 Java中String的了解 String为什么要设计成不可变的?...为什么要有线程,而不是仅仅用进程? run()和start()方法区别 如何控制某个方法允许并发访问线程的个数?...谈谈你对WebSocket的理解 WebSocket与socket的区别 谈谈你对安卓签名的理解。 请解释安卓为啥要加签名机制? 视频加密传输 App 是如何沙箱化,为什么要这么做?

    1.1K20

    最全的BAT大型互联网公司面试题整理

    (一) java基础面试知识点 java中==和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别 探探对java多态的理解 String、StringBuffer...静态内部类的设计意图 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 谈谈对kotlin的理解 闭包和局部内部类的区别 string 转换成 integer的方式及原理 (二)...说说你对Java反射的理解 说说你对Java注解的理解 说说你对依赖注入的理解 说一下泛型原理,并举例说明 Java中String的了解 String为什么要设计成不可变的?...为什么要有线程,而不是仅仅用进程? run()和start()方法区别 如何控制某个方法允许并发访问线程的个数?...谈谈你对WebSocket的理解 WebSocket与socket的区别 谈谈你对安卓签名的理解。 请解释安卓为啥要加签名机制? 视频加密传输 App 是如何沙箱化,为什么要这么做?

    3.9K40

    史上最全 BAT 大厂面试题整理!(速度收藏)

    (一) java基础面试知识点 java中==和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别 探探对java多态的理解 String、StringBuffer...静态内部类的设计意图 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 谈谈对kotlin的理解 闭包和局部内部类的区别 string 转换成 integer的方式及原理 (二...说说你对Java反射的理解 说说你对Java注解的理解 说说你对依赖注入的理解 说一下泛型原理,并举例说明 Java中String的了解 String为什么要设计成不可变的?...为什么要有线程,而不是仅仅用进程? run()和start()方法区别 如何控制某个方法允许并发访问线程的个数?...谈谈你对WebSocket的理解 WebSocket与socket的区别 谈谈你对安卓签名的理解。 请解释安卓为啥要加签名机制? 视频加密传输 App 是如何沙箱化,为什么要这么做?

    1.8K40
    领券