Я использую startService() для запуска новой службы. Это займет некоторое время, прежде чем служба будет готова. Если я немедленно вызову ServiceManager.getService(), он вернет null. Я не нашел никакой блокирующей функции об этом. Как узнать, когда служба готова? Есть ли какие-либо блокирующие функции или системное сообщение, чтобы сказать мне это?
Другой способ помещается ServiceManager.getService() в цикл while, но я не думаю, что это хорошо, потому что он блокирует пользовательский интерфейс.
Вероятно, вы должны перестроить свой код, чтобы использовать Context#bindService
. bindService
позволяет вам предоставить объект ServiceConnection
, который будет иметь свой метод onServiceConnected
, когда служба готова к взаимодействию.