我有一个远程服务,它调用一些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);而不是开始然后绑定。它必须先前运行,然后连接好,什么给出?