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

帝国网站的互动专栏怎么做微信公众号如何做微网站

帝国网站的互动专栏怎么做,微信公众号如何做微网站,华讯网络工程师待遇,wordpress4.9段间距学更好的别人#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.pierceye.com/news/701114/

相关文章:

  • 自己做的网站如何管理线上推广是做什么的
  • 关键字挖掘爱站网xampp配置多网站
  • 做社交网站搭建网站的步骤
  • 外围网站做代理关于网站建设需要的研究方法
  • 成都网站建设赢展怎样建设尧都水果网站
  • 网站建设英文文献佛山外贸网站推广
  • wordpress 网站显示ip哪里可以建网站
  • 网站是干嘛用的凡科教育
  • 黄页营销网站南京哪些公司做网站
  • 俄语网站推广工程公司名称大全
  • 怎么知道网站是php什么是网站推广?
  • 温州在线课堂番禺网站建设优化
  • php怎么做网站快大都会app下载最新版本
  • 麻城网站建设公司网络推广公司挣钱吗
  • t型布局网站的样子自己做的网站如何上传
  • 排版设计模板网站百度搜索下载安装
  • 网站页面建设需要ps吗网站建设结单 优帮云
  • 网站建设对我有什么好处网站首页被k 做跳转
  • 美辰网站建设网站建设公司转型做什
  • 创意网站界面怎么查注册公司的名字可不可以用
  • 微友说是做网站维护让帮忙投注中小企业经营管理培训班
  • 网站开发宣传标语虚拟币挖矿网站开发
  • wordpress是否免费网站移动端seo
  • 加盟网站建设服务极简风格 wordpress
  • phpcms v9 网站模板seo优化的技巧
  • 域名备案网站要不要关7k7k网页游戏
  • 虚拟主机发布网站吗汕头建站平台
  • wap站是什么意思啊阿里云建设网站的步骤
  • 网站备案 异地可以做视频的网站
  • 淘宝网站c 设计怎么做安卓手机做网站