我正在开发一个应用程序,该应用程序使用远程服务来执行某些通信和处理任务。该应用程序运行良好,但我在从服务器解除绑定时遇到一些问题,这使应用程序不稳定。该应用程序的架构如下:
在此处查看图片: https ://docs.google.com/open?id=0B8aFlQkvXrcqbEFhSnRpVzJab3M
如您所见,我创建了一个名为 Device 的类的对象,我在其中启动服务 HealthService,然后该服务启动另一个服务。Device 和 HealthService 之间的通信是通过 AIDL 进行的。HealthService 和 BluetoothService 之间的通信是通过 Message 进行的。
通信工作正常,然后我得到了数据。但是当我想关闭这个通信通道以允许其他设备稍后绑定时,绑定不起作用。这意味着我创建的所有设备都在监听和处理数据,即使我当时没有绑定。它引起了许多我想解决的冲突。
这里有一些代码:
设备(绑定健康服务):
intent= new Intent("com.signove.health.service.HealthService");
context.startService(intent);
context.bindService(intent, serviceConnection, 0);
设备(解除绑定健康服务):
context.unbindService(serviceConnection);
Log.w("kill", "Device: Service connection unbinded");
Log.w("kill", "Device: Binded = " + Boolean.toString(api.asBinder().isBinderAlive()));
isBinderAlive 总是返回 true...
我试图用 stopService 销毁服务,但这会导致崩溃。在服务 onUnbind 被加入。我已经实现,当调用 onUnbind 时,服务会从其他服务中取消绑定以清理所有内容,但它一直在崩溃。
有人可以帮助我吗?:)。如果需要,请询问更多信息。