调用服务的服务,onServiceConnected从未调用过?

时间:2011-10-06 22:14:50

标签: java android android-service

我有一个远程服务,它调用一些jni来启动一个c进程。启动该过程后,它可以报告要连接的远程活动(通过AIDL)的端口号。我在另一个启动远程服务的.apk中有一个服务,然后绑定到它。如果远程服务在 之前启动,则Activity的服务尝试连接到它,它将在Activity的服务中调用onServiceConnected。如果远程Activity负责两者启动和绑定,则首先发生绑定,然后是onStartCommand(),但在这种情况下,永远不会调用onServiceConnected()。

在我的活动中,只要 onServiceConnected()最终被调用,它就与的事件顺序无关。为什么会这样?

______________________________________________
为了澄清,首先启动远程服务(好的方案): ______________________________________________

V / rmt_service(11202):onStartCommand输入
V / rmt_service(11202):onStartCommand退出
V / rmt_service(11202):onBind输入
V / rmt_service(11202):港口:50336
V / rmt_service(11202):港口:50943
V / rmt_service(11202):港口:57703
V / rmt_service(11202):onBind退出

V / act_service(11221):onStartCommand - 输入
V / act_service(11221):bindService - 输入
V / act_service(11221):bindService - 退出
V / act_service(11221):onStartCommand - 退出

V / rmt_service(11202):onStartCommand输入
V / rmt_service(11202):onStartCommand exit

V / act_service(11221):onServiceConnected - 输入
V / act_service(11221):onServiceConnected - 退出
V / act_service(11251):onStartCommand - 输入
V / act_service(11251):bindService - 输入
V / act_service(11251):bindService - 退出
V / act_service(11251):onStartCommand - 退出

V / rmt_service(11202):onStartCommand输入
V / rmt_service(11202):onStartCommand exit

V / act_service(11251):onBind - 输入
V / act_service(11251):onBind - 退出
V / act_service(11251):onServiceConnected - 输入
V / act_service(11251):onServiceConnected - 退出

______________________________________________
现在坏了:
______________________________________________

V / act_service(11278):onStartCommand - 输入
V / act_service(11278):bindService - 输入
V / act_service(11278):bindService - 退出
V / act_service(11278):onStartCommand - 退出
V / act_service(11278):onBind - 输入
V / act_service(11278):onBind - 退出

V / rmt_service(11285):onBind enter

V / act_service(11278):getLib - 输入

V / rmt_service(11285):港口:58782
V / rmt_service(11285):港口:41039
V / rmt_service(11285):港口:33770
V / rmt_service(11285):onBind退出
V / rmt_service(11285):onStartCommand输入
V / rmt_service(11285):onStartCommand exit

你可以看到,即使我在调用bindService()之前在远程服务上调用了startService(),它们系统首先绑定到服务,然后调用onStartCommand()。

任何帮助都将不胜感激。

修改

即使我在调用startService()之后添加了一个暂停,它也不起作用,也没有bindService(intent,servConn,Context.BIND_AUTO_CREATE);而不是开始然后绑定。它必须先前运行,然后连接好,什么给出?

0 个答案:

没有答案