gpt4 book ai didi

Android:如何安全地解除绑定(bind)服务

转载 作者:IT王子 更新时间:2023-10-29 00:03:36 26 4
gpt4 key购买 nike

我有一个绑定(bind)到应用程序上下文的服务,如下所示:

getApplicationContext().bindService(
new Intent(this, ServiceUI.class),
serviceConnection,
Context.BIND_AUTO_CREATE
);

protected void onDestroy() {
super.onDestroy();
getApplicationContext().unbindService(serviceConnection);
}

由于某种原因,只有有时应用程序上下文没有正确绑定(bind)(我无法修复该部分),但是在 onDestroy() 中,我执行 unbindservice 会引发错误

java.lang.IllegalArgumentException: Service not registered: tools.cdevice.Devices$mainServiceConnection.

我的问题是:有没有办法安全地调用 unbindservice 或者在解除绑定(bind)之前检查它是否已经绑定(bind)到服务?

提前致谢。

最佳答案

试试这个:

boolean isBound = false;
...
isBound = getApplicationContext().bindService( new Intent(getApplicationContext(), ServiceUI.class), serviceConnection, Context.BIND_AUTO_CREATE );
...
if (isBound)
getApplicationContext().unbindService(serviceConnection);

注意:

您应该使用相同的 context 来绑定(bind)服务和取消绑定(bind)服务。如果您使用 getApplicationContext() 绑定(bind)服务,那么您还应该使用 getApplicationContext.unbindService(..)

关于Android:如何安全地解除绑定(bind)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com