我正在创建一个服务...绑定配置器,但是我想取消绑定配置器并使服务保持运行...但是当我解除绑定时,服务自行停止,并且没有解除绑定,服务崩溃时出现错误泄露的服务连接...所以我该怎么办?
我正在创建没有BIND_AUTOCREATE
标志的服务。使用startService
。
答案 0 :(得分:1)
您应该能够使用intent和startService()启动后台服务,该服务不会绑定到您的活动,不应泄漏或崩溃,我不确定您使用的是什么配置器,因为我从来没有在AIDL调用中绑定服务,你可以传入参数吗?
我不是下载者,虽然我认为你需要附上一些代码。如果您附上代码,请留下评论,我会看看是否可以更新我的答案以获得更多帮助。
答案 1 :(得分:0)
我认为你不应该绑定服务,只需要startService()即可。当您需要在UI流程和服务流程之间进行通信时,AIDL可以提供帮助。
我通常使用AIDL强绑定器作为服务进程的回调来执行。您可以查看我的库以获取一些示例:hogwarts library
答案 2 :(得分:0)
这个问题可能混合了许多不同的问题。
我认为问题在于,当与服务一起使用时,“已启动”一词与实际完成有用的工作无关。服务并没有真正“运行”。服务代码执行时只响应两件事:来自绑定客户端的意图和请求。
当你解开它时,你的服务肯定不会停止。如果它已启动,它将保持启动状态。如果它没有启动,它仍然不是。我想更多地了解什么是“正在运行”,以便在解除服务绑定时崩溃。
如果您的配置程序在没有解除服务绑定的情况下离开,那么您已泄露了Binder连接。这会给你一个警告,但这可能不是什么大问题:Binder应该照顾它。