当前位置: 首页 > news >正文

珠海建站联系方式长沙多地发布最新通告

珠海建站联系方式,长沙多地发布最新通告,godaddy服务器做网站,网站逻辑结构优化是指学更好的别人#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为2478字#xff0c;预计阅读6分钟 前言 Android的AIDL使用和异常报错都已经介绍过了#xff0c;今天这篇还是在原来的Demo基础上加入几个AIDL的进阶使用方法。 】 AIDL进阶使用 微卡智享 in,out,inout的使… 学更好的别人 做更好的自己。 ——《微卡智享》 本文长度为2478字预计阅读6分钟 前言 Android的AIDL使用和异常报错都已经介绍过了今天这篇还是在原来的Demo基础上加入几个AIDL的进阶使用方法。 】 AIDL进阶使用 微卡智享 in,out,inout的使用 关于in,out,inout在AIDL的基础介绍中有提到过 AIDL中还有定向的Tag包括了in、out、inout。其中 in 表示数据只能由客户端流向服务端 out 表示数据只能由服务端流向客户端而 inout 则表示数据可在服务端与客户端之间双向流通。 Vaccae公众号微卡智享Android Aidl跨进程通讯的简单使用 根据字面意思可以很简单的理解所以我们直接做一个函数实现inout的方法即可。 在服务端的Aidl文件中加入一个新的函数updateTestDatsList输入的参数设置为inout Build后在Service的object : ITestDataAidlInterface.Stub()里面写入实现这里我们先将传入的list里面再自定义加入一条然后插入到Service缓存的List列表中再将传入的listdata清空后把Service缓存中的所有数据都插入传入的listdata 因为是跨进程所以客户端需要将修改后的Aidl复制过来替换原来的然后在MainActivity中写入实现调用 运行效果 点击更新列表后的对比可以看到使用inout参数传入的list最后也已经修改完成。 AIDL使用Bundle传递多个数据 AIDL可以使用Bundle类封装通讯数据用于传递一些复杂的对象或者多个对象。 Bundle类是一个键值对的容器它可以存储不同类型的数据并且实现了Parcelable接口所以可以在进程间传输。 Service的AIDL接口加入新的函数transBundle传入的参数就是Bundle 在Service加入接口实现这里我们测试里面加入一个Float一个Int和一个List数据将原来的价格和数量都统一改为一样的数据后再将传入的list加入到后面最后展现出来 划重点 Android有两种不同的classloadersframework classloader和apk classloader其中framework classloader知道怎么加载android classesapk classloader继承自framework classloader所以也知道怎么加载android classes。但在应用刚启动时默认class loader是apk classloader在系统内存不足应用被系统回收会再次启动这个默认class loader会变为framework classloader了所以对于自己的类会报ClassNotFoundException就会出现android.os.BadParcelableException: ClassNotFoundException when unmarshalling 所以在bundle数据读取前先设置classloader后才能正确地读取自定义类 it.classLoader TestData::class.java.classLoader override fun transBundle(bundle: Bundle?): MutableListTestData {bundle?.let { it -/*Android有两种不同的classloadersframework classloader和apk classloader其中framework classloader知道怎么加载android classesapk classloader继承自framework classloader所以也知道怎么加载android classes。但在应用刚启动时默认class loader是apk classloader在系统内存不足应用被系统回收会再次启动这个默认class loader会变为framework classloader了所以对于自己的类会报ClassNotFoundException就会出现android.os.BadParcelableException: ClassNotFoundException when unmarshalling*///所以在bundle数据读取前先设置classloader后才能正确的读取自定义类it.classLoader TestData::class.java.classLoaderval price it.getFloat(price)val qty it.getInt(qty)mTestDatas.map { t-t.price pricet.qty qty}val list if (Build.VERSION.SDK_INT Build.VERSION_CODES.TIRAMISU) {it.getParcelableArrayList(listdatas, TestData::class.java)} else {it.getParcelableArrayListTestData(listdatas)}list?.let { item-mTestDatas.addAll(item)}}return mTestDatas} 客户端中一样要把AIDL复制过来后写实现方法 运行效果 关于oneway关键字 AIDL中的oneway关键字主要用来使IPC调用变成非阻塞的。 oneway需要注意的几点 将远程调用改为异步调用使得远程调用变成非阻塞式的客户端不需要等待服务端的处理只是发送数据并立即返回。要注意的是oneway修饰本地调用没有效果仍然是同步的客户端需要等待服务端的处理。 在同一个IBinder对象调用中会按照调用顺序依次执行不同的IBinder对象可能导致调用顺序和执行顺序不一致。 oneway不能带有返回值或抛出异常因为客户端是无法接收的。 Demo源码中也已经更新上传了。 源码地址 https://github.com/Vaccae/AndroidAIDLDemo.git 点击原文链接可以看到“码云”的源码地址 完 往期精彩回顾   Android Aidl跨进程通讯(二)--异常捕获处理     Android Aidl跨进程通讯的简单使用     Android BlueToothBLE入门三——数据的分包发送和接收源码已更新   ​
http://www.zqtcl.cn/news/550325/

相关文章:

  • joomla 网站图标六安市城市建设档案馆网站
  • 郑州 公司网站制作win10 wordpress安装
  • html5网站有哪些网站建设部分费用会计科目
  • 网站域名备案 更改吗深圳新站优化
  • 房产网站门户系统免费网站免费无遮挡
  • 用国外网站 图片做自媒体seo诊断a5
  • 广州市南沙建设局网站优改网logo设计
  • 网站建设亿玛酷知名公司网站首页如何做
  • 教育网站 php网络服务公司
  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏
  • 设备上哪个网站做外贸推广网络服务类型及其所采用的网络协议
  • 学习前端开发的网站动漫设计属于什么大类
  • 十堰秦楚网 十堰新闻门户网站报修网站模板
  • 家居小程序源码下载自动seo系统
  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名