bindService (): я должен защищать от onServiceConnected (), никогда не прибывающего - PullRequest
0 голосов
/ 27 января 2012

Android Context.bindService () является асинхронным.Даже если он возвращает true, IBinder не доступен сразу.Вы даете ему объект ServiceConnection, и фреймворк вызывает его обратно.По крайней мере, так и должно быть.

Кто-нибудь когда-нибудь сталкивался с ситуацией, когда bindService () возвращает true, но вызов onServiceConnected () никогда не приходит?Это условие, которое я должен учитывать и защищать?

Сервис, который я собираюсь использовать, - это биллинг в приложении.

1 Ответ

0 голосов
/ 03 февраля 2012

Если служба, к которой вы привязываетесь, работает в том же процессе, что и клиент (т. Е. Локальная служба), то нет практической причины для того, чтобы onServiceConnected не вызывалось, если bindService возвращает true.Если служба работает в удаленном процессе, то есть по крайней мере одно условие, которое вы должны обработать, даже если bindService возвращает true: если удаленный процесс завершится с ошибкой, вы получите onServiceDisconnected, а затем снова onServiceConnected, когда система перезапустит службуснова, и это может занять некоторое время.

Вы должны быть в состоянии доверять системе, что если bind вернет true и не будет выдано никаких исключений безопасности, вы должны получить onServiceConnected в течение разумного времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...