defaultServiceManager()->getService("serviceName") block住了

w1072190160 2017-11-30 07:35:09
最近碰到一个很奇怪的问题:
自己创建了两个native service,在service A中通过binder调用service B的函数失败了。
block在service A的defaultServiceManager()->getService("serviceB")处。

首先我排除了这两个service没有注册到ServiceManager里,在service list命令里可以看到这两个service。
并且我另外写了个client 调用service B的接口是没有问题的。

然后我怀疑是不是在service里是不是不能调用其他service。
但我看MediaPlayService中是可以这么做的。

现在不知道为什么会出现这种情况。
请帮助。
...全文
311 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
w1072190160 2017-12-01
  • 打赏
  • 举报
回复
@xw13782513621 谢谢你的回答。 这个问题已经解决了,原因是在Service A fork的子进程里调的serviceB。去掉fork后调用service B就没有问题了。 此楼结帖。
江三木洛 2017-12-01
  • 打赏
  • 举报
回复
系统的服务可以这么调用是因为系统有一个ServiceManager类将各种系统服务按照键值对存储起来了,本地的服务不会自动存进去,所以还是老实的写Intent去调用吧
w1072190160 2017-11-30
  • 打赏
  • 举报
回复
有人看到这个问题吗?自己顶一下

80,349

社区成员

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

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