【发布时间】:2013-11-17 02:24:42
【问题描述】:
我对此做了很多研究,但仍然不确定我是否可以同步连接到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 之前”。
但是,我已经意识到这一点,问题是是否有办法与服务同步连接。
【问题讨论】:
标签: android multithreading android-service