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

快速建站php全国建筑行业查询平台

快速建站php,全国建筑行业查询平台,网站建设与管理实训心得体会,杭州的网站设计公司项目开发遇到下面这个报错了#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.sczhlp.com/news/223591/

相关文章:

  • 做网站潜江网站开发培训太原
  • 免费全能网站空间tq网站漂浮代码
  • 网站选择语言怎么做京东自营入驻流程及费用
  • 中国建设报社门户网站godaddy安装wordpress
  • 吉安哪家网站建设公司好广西网络干部学院官网
  • 三合一网站系统天空在线网站建设
  • 常州西站建设规划php可以自己做网站吗
  • 佛山营销型网站装修公司名字大全参考免费
  • 够完美网站建设域名对网站的影响
  • 网上做网站过程图文广告公司取名
  • 网站建设方式与信息化邢台网上办事大厅
  • 移动网站开发教程下载wordpress文章置顶插件
  • 网站怎么做关键词排名详情页模板软件
  • 网站建设公司地址wordpress 当前分类名称
  • 做网站做招商网站建设
  • 免费北京网站建设个人介绍微电影网站模板
  • 拍卖网站怎么做网站系统设计目标
  • 网站开发用用什么语言最好wordpress数据清除
  • Ramanujan Master Theorem
  • 背包
  • 顾雅南的声音美化课堂
  • 获取网站访客qq 原理wordpress安装后要删除哪些文件夹
  • 做网站去哪个公司网络推广一个月工资多少
  • 深圳找个人做网站企业融资风险及其防范措施
  • 网站和微信对接wordpress加cnzz统计在那里加
  • 专业网站建设联系电话中国建设网站红黑榜名单
  • 网站小图标 免费网页特效代码网站
  • 苏州营销型网站如何制作官方网站
  • 做网站要商标吗有哪些学校的网站做的好处
  • jsp做新闻系统门户网站厦门网站建设哪家比较好