У меня есть удаленная служба, с которой могут привязываться внешние приложения. Бывают ситуации, когда я могу отказаться от привязки. В соответствии с документацией,
Верните канал связи в службу. Может возвращать null, если клиенты не могут привязываться к службе.
@Override
public IBinder onBind(final Intent intent) {
return null;
}
Возвращение null действительно не возвращает объект IBinder и, следовательно, предотвращает соединение, однако вызывающее приложение неправильно получает эту "информацию".
boolean bound = context.bindService(intent, serviceConnection, flagsHere);
Верно ли null или нет из Сервиса, это всегда возвращает true?
В соответствии с документацией,
Возвращает - если вы успешно привязаны к службе, true вернулся; false возвращается, если соединение не создано, поэтому вы не получать объект службы
Я предположил, что возврат null из onBind привел бы к тому, что bindService вернет false. Предположения никогда не являются хорошей идеей...
Возвращаемое значение null, тем не менее, не позволяет ServiceConnection быть вызванным экземпляром, но последствием этого будет отсутствие возможности проверить, связующее на самом деле является нулевым в onServiceConnected.
Итак, мой вопрос - как приложение "знает", если запрос привязки был отклонен?
Кроме того, если я решаю на лету, что запрос onRebind (ранее возвращаемый true из onUnbind) должно быть отклонено, я, похоже, не могу переопределить поведение, чтобы предотвратить это:
@Override
public void onRebind(final Intent intent) {
if (shouldAllowRebind(intent)) {
super.onRebind(intent);
} else {
// ?
}
}
Надеюсь, кто-то может пролить свет на меня. Спасибо заранее.