我使用startService()来启动新服务。服务准备好之前需要一些时间。如果我立即调用ServiceManager.getService(),它将返回null。我没有找到任何关于此的阻止功能。如何知道服务何时准备好?是否有任何阻止功能或任何系统消息告诉我?
另一种方法是将ServiceManager.getService()放在while循环中,但我认为它不好,因为它会锁定UI。
答案 0 :(得分:2)
您应该重新构建代码以使用Context#bindService
。 bindService
允许您提供ServiceConnection
对象,当服务准备好进行交互时,该对象将调用其onServiceConnected
方法。