我在代码中的某个地方,我只有非常有限的权限,但必须将数据外部发送到Android应用程序。 (Android系统C代码) 显然我无法启动绑定服务,但我可以连接到已经运行的服务。因此,如果服务可用,我的实现会每秒检查一次,如果可用,它会连接并开始发送数据。这很好。
我的问题如下。如果我终止服务二进制文件/进程,客户端会以某种方式看不到该服务不再可用。有没有办法删除我使用addService(...)
添加的服务?客户做getService()
。
答案 0 :(得分:0)
我可以通过在客户端再次定期执行getService()来解决问题。像这样,如果服务消失,他们将不会立即看到它,但他们在某些时候得到它。如果服务再次可用,他们可以重新连接。
我没有找到任何“删除”服务的内容。但是这种解决方法效果很好。
答案 1 :(得分:0)
没有API可以删除服务句柄,但是当服务终止时,服务管理器将使用svcinfo_death()
释放句柄。本机服务管理器中唯一有效的传入事务代码是SVC_MGR_GET_SERVICE
,SVC_MGR_CHECK_SERVICE
,SVC_MGR_ADD_SERVICE
和SVC_MGR_LIST_SERVICES
(请参阅service_manager.c)。
也就是说,您可能会发现将this solution应用于您的问题可能会更有效,更可靠,以确定是否有必要再次调用getService()
。