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

左右网站模版金融保险网站模板

左右网站模版,金融保险网站模板,企业网站建设预算表,网站开发产生的材料项目开发遇到下面这个报错了#xff01; 问题原因 直接说原因#xff0c;就是因为进程间不能直接传递对象#xff0c;应该传递该Binder对象的映射#xff08;代理对象#xff09;#xff0c;所以类型转换就出错了。如果在同一个进程中#xff0c;直接传递对象没有关系 问题原因 直接说原因就是因为进程间不能直接传递对象应该传递该Binder对象的映射代理对象所以类型转换就出错了。如果在同一个进程中直接传递对象没有关系下面的类型强转是没有问题的但是如果是不同进程强转就会失败就会报上面的错误。 那启动应用内启动service怎么就成进程间通信了呢因为service是指定了android:process:remote。就算自己的service没有指定android:process如果应用中其他service写了android:process也会导致自己的service报错。 我的Service是一个websocket通信服务本来我把bindService写在Activity中但是这有一个问题就是页面跳转服务会随着声明周期被销毁重建这样每次跳转页面都重新连接浪费时间于是我就把Service挪到了Application里面。我的页面一个LoginActivity一个MainActivity页面跳转到MainActivity的时候就报错了因为我的MainActivity里面使用了百度地图而百度地图的service如下 !-- 百度地图定位的service组件--service android:namecom.baidu.location.fandroid:enabledtrueandroid:process:remote/ 这样就导致我的Service的binder转换报错了。把百度地图Service里面的android:process:remote去掉就就可以了。 解决办法 一.去掉android:process:remote 二.aidl方式 下面记录一下进程间Service要想解决这个问题就是需要用aidl方式。 1.创建aidl文件 Android Studio可以直接创建在与java文件平级的文件下会创建一个aidl文件夹里面包名是app的包名创建一个后缀为.aidl的文件夹 创建之后是这样的 aidl文件如下 // IMyAidlInterface.aidl package com.deviser.androidremote;// Declare any non-default types here with import statementsinterface IMyAidlInterface {//这用来传递Service的包名和文件名传递之后通过反射获取Service对象String getName(); } 编译之后build下面会生成 2.重写Service的Binder方法 // //用于Activity和service通讯//这是原来的方法直接把WebClientService这个对象返回了 // public class WebClientBinder extends Binder { // public WebClientService getService() { // return WebClientService.this; // } // }//通过aidl方式继承IMyAidlInterface.Stub返回的是WebClientService的包名和文件名//进程间传递的是字符串public class WebClientBinder extends IMyAidlInterface.Stub{Overridepublic String getName() throws RemoteException {return WebClientService.class.getName();}} 3.修改onServiceConnected private var webServiceConnection: ServiceConnection object : ServiceConnection {override fun onServiceConnected(componentName: ComponentName?, iBinder: IBinder?) {//原来就是这里iBinder强转成WebClientService.WebClientBinder报错 // var binder: WebClientService.WebClientBinder iBinder as WebClientService.WebClientBinder // webClientService binder.service// 获得代理对象var proxy IMyAidlInterface.Stub.asInterface(iBinder)try {//通过反射机制把字符串转换成对象WebClientService对象var clazz Class.forName(proxy.name)webClientService clazz.newInstance() as WebClientService?}catch (e: Exception){e.printStackTrace()}}override fun onServiceDisconnected(componentName: ComponentName?) {Log.e(MyConstant.TAG,服务与活动成功断开);}} 到这里问题就解决啦
http://www.dnsts.com.cn/news/244203.html

相关文章:

  • 淄博网站建设公司羊肉片机交通行业门户网站建设的必要性
  • 广州市专业网站建设山西省新农村建设网站
  • jsp做网站注册页面外贸网站推广有哪些
  • 网站打不开 其它能打开网站超市安装
  • 品牌网站建设公揭阳网站制作计划
  • 充值网站怎么做小米商城网站建设
  • 网站建立健全举报工作机制网站设计建网站
  • 郑州企业如何建网站商业网站建设与维护
  • 迪士尼网站是谁做的推广普通话的故事
  • 网站都有备案号吗自学网站建设多久
  • 商丘做网站张东莞网络营销推广专业
  • 财经大学网站建设上海手机网站制作公司
  • 便捷的网站建设淮南网官方网站
  • dz可以做视频网站吗一些难以发现的网站
  • 如何在网站中加入百度地图网站建设实训小结
  • 长春网站开发公司wordpress 做的网站
  • 石岩附近网站建设公司网站建设网页
  • 凡科做的网站如何绑定域名优化是什么意思网络用语
  • aspnet东莞网站建设价格wordpress页面上显示地图
  • 做网站推广的前期条件wordpress多域名图标
  • 建设外贸营销型网站需要什么做编程网站
  • 海阳市建设局网站遵义seo网络优化招聘
  • 漳浦县建设局网站海口专业网站建设地址
  • 网站营销活动策划我的qq中心手机版登录入口
  • qq官方网站ps做网站效果图制作过程
  • 个人怎样免费建网站小程序搭建挣钱
  • 太原建站的模板广州海珠网站开发
  • 怎么查网站域名午夜做网站
  • 安康市网站建设公司wordpress sportsline
  • 广东建设营销型网站网上哪里接app推广单