Вызов службы onServiceConnected даже до того, как полностью привязать другую службу

У меня такой случай:

Я разрабатываю сервис, который будет связывать сервис производителя через интерфейс AIDL, в его методе onCreate ().

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

Я не могу привязать службу производителя напрямую из активности, потому что наша система требует, чтобы другие приложения вызывали эту функцию, они собираются привязать мою службу через другой интерфейс AIDL.

Я ищу способ замедлить вызов метода onServiceConnected, пока вторая служба полностью привязана.

вернуть из onBind() пользовательский «прокси» объект Binder и переопределить его метод onTransact, «выбрасывающий» IllegalStateException, если он еще не готов

pskink 17.09.2018 15:48

эээ, вы даже можете переопределить onTransact в вашем Stub, так что нет необходимости в дополнительном «прокси» Binder

pskink 17.09.2018 16:01

Это именно то, что я сделал, хорошо выгляжу, большое вам спасибо! :)

Stiliyan Kovachev 17.09.2018 16:07

ты умеешь "закинуть" IllegalStateException внутрь onTransact?

pskink 17.09.2018 16:08

Я так думаю, внутри моей заглушки я делаю следующее: @Override public boolean onTransact (int code, Parcel data, Parcel reply, int flags) выдает RemoteException, IllegalArgumentException {if (mICloudService == null) throw new IllegalArgumentException ("Метод не полностью связаны "); return super.onTransact (код, данные, ответ, флаги); }

Stiliyan Kovachev 17.09.2018 16:33

на самом деле есть Parcel#writeException - вам нужно назвать его на Parcel reply, я верю, но не уверен на 100% ...

pskink 17.09.2018 16:37

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

Stiliyan Kovachev 17.09.2018 16:46
0
7
29
0

Другие вопросы по теме