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

网站建设与维护期末试卷泰安市高新区建设局网站

网站建设与维护期末试卷,泰安市高新区建设局网站,wordpress 编辑器 图片,wordpress文章关键字怎么添加学更好的别人#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/190800/

相关文章:

  • 网站建设外文版要求网站关键字优化销售
  • 马来西亚做公路投标网站设计网页多少钱
  • 织梦网站多少钱广告多的网站
  • 济南网站建站模板深圳南园网站建设
  • 国家免费技能培训官网白杨seo博客
  • 福州seo网站建设微服务网站
  • 网站宽度 像素长沙电商运营培训
  • 备案上个人网站和企业网站的区别app开发多少钱一个
  • 有限公司网站建设 中企动力佛山培训机构招生方案
  • 扫黄打非网站建设专业的高端网站制作公司
  • 做自媒体发视频用哪些网站江西网站建设哪家好
  • wordpress用户列表南宁百度seo排名优化
  • 做网站时如何写接口文档上海网站设计建设公司
  • 网站小图标怎么制作平面设计素材网站推荐
  • 多元网络兰州网站建设惠州网页建站模板
  • 网站建设中首页模板下载网页制作模板保存
  • 宁夏做网站的江苏网站建设的案例展示
  • 网站功能需求文档如何免费域名注册
  • 推广网站的软件包头移动的网站建设
  • 自己制作音乐的软件免费上海seo怎么优化
  • 学vue可以做pc网站网站站长统计怎么弄
  • 做物流的可以在那些网站找客户大淘客网站建设app
  • 石家庄兼职做网站dedecms做视频网站
  • 优化公司怎么优化网站的网站 意义
  • 唯品会一家专门做特卖的网站手机版招聘网站开发技术维护
  • 做短租哪个网站wordpress 4.7
  • 网站换空间 site网站域没到期不能续费吗
  • 找别人做网站要考虑哪些网站导航条设计欣赏
  • mvc网站开发实例wordpress雪人主题2.0
  • 红色好看的网站中山网站建设工作室