我对此做了很多研究,但仍然不确定我是否可以同步连接到android服务。startService() 和 bindService() 服务调用本质上是异步的,我想要做的是使这种行为同步。
我尝试在从主线程启动的单独线程中编写 startService()、bindService() 和 ServiceConnection 对象初始化(包含 onServiceConnected() 等)。并且主线程一直等到在另一个线程上调用 onServiceConnected() 并且服务对象被初始化,但是由于 onServiceConnected() 仅由主线程调用(http://developer.android.com/reference/android/content/ServiceConnection .html ) 由于等待调用而被阻塞,它形成了一个死锁。
有谁知道我的上述推理是否正确/不正确?是否有另一种方法来实现同步行为?或者唯一的选择是在 onServiceConnected() 回调发生后调用服务函数?
编辑:(解释它不是其他问题的完全重复)
在另一个问题中,应用程序与服务异步连接并期望它同步运行,因为它提到“通过添加各种 Log.xx 我发现 if(bindService(...)) 之后的代码实际上在 ServiceConnection 之前。 onServiceConnected 正在被调用”。
但是,我已经意识到这一点,问题是是否有办法与服务同步连接。