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

wordpress强行全站https郑州seo顾问阿亮

wordpress强行全站https,郑州seo顾问阿亮,成都今天消息,怎么自己做网站卡扣项目开发遇到下面这个报错了! 问题原因 直接说原因,就是因为进程间不能直接传递对象,应该传递该Binder对象的映射(代理对象),所以类型转换就出错了。如果在同一个进程中,直接传递对象没有关系&a…

        项目开发遇到下面这个报错了!

问题原因

        直接说原因,就是因为进程间不能直接传递对象,应该传递该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:name="com.baidu.location.f"android:enabled="true"android: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.tj-hxxt.cn/news/31968.html

相关文章:

  • 成都网站关键排名北京seo报价
  • 做网站推广费用如何优化网站
  • 软件开发和网站建设哪个好天津seo公司
  • 专业餐饮vi设计公司seo营销推广平台
  • 邢台seo一站式长沙网络营销咨询费用
  • 网站设计与网页配色实例精讲厦门seo推广公司
  • 网站怎么加入百度网盟免费推广方式有哪些
  • 网站后台费用外媒头条最新消息
  • 天眼查企业查询在线官网优化网站seo公司
  • 帮别人设计网站电子商务网站
  • 建筑工程公司注册要求seo基础培训教程
  • 怎么做同学录的网站2345网址导航电脑版官网
  • 各省网站备案时长网络营销顾问工作内容
  • 网页游戏网络游戏优化网站排名解析推广
  • ps做网站导航百度推广售后
  • 营销推广工作内容seo是什么的简称
  • 郑州艾特网站建设专业培训大全
  • wordpress建站流量网络营销有哪几种方式
  • 苏州企业网站建设设计推广app赚佣金平台
  • 响应式 网站建设湖南企业网站建设
  • 哪个nas可以做网站上海十大公关公司排名
  • 网站后台图片并排怎么做互联网推广怎么做
  • 小程序开发公司网站源码下载怎么做一个公司网站
  • 网站建设服务标语网站怎么搭建
  • 做的比较好的意大利网站企业软文范例
  • 帝国cms搭建个人网站杭州网站推广找哪家
  • 遂宁公司做网站湖南seo服务
  • 政府网站必须做等保友链通
  • 怎样做软件网站建设镇江网站建设推广
  • wordpress下载链接 插件北京排名seo