2

我正在开发一个应用程序,该应用程序使用远程服务来执行某些通信和处理任务。该应用程序运行良好,但我在从服务器解除绑定时遇到一些问题,这使应用程序不稳定。该应用程序的架构如下:

在此处查看图片: 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 时,服务会从其他服务中取消绑定以清理所有内容,但它一直在崩溃。

有人可以帮助我吗?:)。如果需要,请询问更多信息。

4

0 回答 0