Android Activity onDestroy()中unBindService,提示Service not registered

scitachi 2019-05-09 07:56:30
Android Activity onCreate() 中 bindService,onDestroy()中unBindService,提示AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Service not registered

已经使用了一个boolean flag 标记是否成功执行bindService了。

在onCreate()里,用的flag = bindService(intent,connection,BIND_AUTO_CREATE);来接bindService的结果了。

在onDestroy()里,用
if(true == flag)
{
unbindService(connection);
flag = false;
}


但是有一次在执行onDestroy 的时候,还是报了AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Service not registered
请问大佬这是怎么回事?


有没有可能是bindService时候返回true,但实际并未成功? 或者connection取的不对...
...全文
720 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
scitachi 2019-06-04
  • 打赏
  • 举报
回复
最后发现原因是bindService和unbindService 处理的的不是同一个对象。 结帖给分了~
jzp12 2019-05-10
  • 打赏
  • 举报
回复
onServiceConnected回调成功了,才表示bindService成功,此时才能unbindService
jklwan 2019-05-10
  • 打赏
  • 举报
回复
在onServiceConnected中设置flag = true,不要使用flag = bindService...
scitachi 2019-05-10
  • 打赏
  • 举报
回复
引用 2 楼 jklwan 的回复:
在onServiceConnected中设置flag = true,不要使用flag = bindService...


哦~ 楼上两位说的我明白了~ 请问一下,bindService和unbindService
参数中 的ServiceConnection对象的hash 是不是必须完全相同,也就是必须是同一个对象。
否则一定会报错,对不?
scitachi 2019-05-09
  • 打赏
  • 举报
回复
请问 Connection对象 的toString()不一致是否可能会造成这个问题?
我试了下,unbindservice和bindservice时的ServiceConnection对象的hash是不一样的。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧