1.server程序中创建一个对象,在activity所有状态中打印这个对象,先运行服务端,在运行client

2.通过bindService连接-->oncreate-->onBind-->onServiceConnected

3.调用server接口代码,打印这个对象 输出为null ,将client finish后,server程序显示,在activity状态中 对象不为null....


下班,下周再解决


解决方法,在使用AIDL通讯时候,变量的初始化最好在service 的oncreate中实例化,如果在app 的activity中实例化后,Aidl访问的时候因为不是同一个进程空间所以实例化的对象没有被访问到。但是在service 的oncreate 实例化后,跨进程可以访问。


2014-9-2

隔了一段时间才发现为什么老是出现参数为null,已经在mainservice 中声明并且赋值了变量,

activity 启动时候 startservice (mainservice ),mainservice 中实例化ServiceUtil对象并是i绑定远程service,同时有个全局静态远程接口对象的属性并创建成功时候通过ServiceUtil.getRemote()赋值,这样就可以通过全局静态使用这个远程接口对象

然后问题就出现了,当创建成功、赋值时候这个全局静态远程接口对象都是不为空的,但是在acticity使用的时候就出现了空的现象,个人也不明白是什么原因,如果要说的话只能说他们两个不是在 一个进程空间的


决解的办法是不要使用getRemote来赋值,而是直接getRemote().xxx(调用远程接口方法。


2014-11-14

在使用服务程序时候,在某个类里面设置了基本类型的静态变量,在服务被destroy后再被onbind时候,这基本类型的静态变量没有恢复默认值,但是不是基本类型的可以恢复到默认值。....


2015-1-20

在连接server线程中注册了一个车载蓝牙连接广播,收到广播时候创建一个Client,因为Client 构造函数中又使用到了两个AIDL连接----问题出现了 在没创建一个AIDL 耗时3-4s

这是不能忍受的,当socket连接上的时候才基本上不耗时

解决办法:再在server线程中创建一个监听线程类,使用wait 和notify来出来链接监听和创建Client 就不会出现耗时太久的问题

原因:不清除。。。。