2016-03-28 4 views
1

В сервисе Google Doc упоминается метод onBind() всегда, даже если мы не собираемся связывать Serive.Почему метод onbind() настоятельно рекомендуется реализовать даже в начальном сервисе

Вы должны всегда реализовать этот метод, но если вы не хотите разрешать привязку, тогда вы должны вернуть значение null.


For Service doc click here
.
Я смущен, в чем необходимость реализовать метод onbind(), когда я не собираюсь связывать службу (мне нужно только начать сервис)?
Почему бы не оставить этот метод вообще, если я только запускаю сервис через метод startService().
Есть ли какие-либо проблемы, с которыми я могу столкнуться Если я вообще не реализую этот метод?

+1

«Есть ли какие-либо проблемы, с которыми я могу столкнуться. Если я вообще не реализую этот метод?» - Да, это не скомпилируется. 'onBind()' - абстрактный метод. Вы должны реализовать его в любом конкретном подклассе «Сервис». –

+0

Это очень очевидно, Майк, но смысл в том, почему Google дизайн это таким образом? – shaby

+1

Это явно не было очевидно, если вы считали, что можете подклассифицировать «Сервис» без реализации этого метода. Зачем еще ты задал бы этот вопрос? В любом случае, вы должны спросить дизайнеров. И, действительно, если CommonsWare не знает, почему, или не может придумать причину, почему, я сомневаюсь, что вы получите ответ здесь, если только один из дизайнеров не споткнется на этот пост. –

ответ

0

По неизвестным причинам, Google сделал Service быть abstract класс и сделал onBind() быть abstract методом. Как указывает Майк М в комментарии, если вы не реализуете onBind(), ваш подкласс Service не сможет скомпилировать.

Некоторые существующие Service подклассы, такие как IntentService, реализуют onBind() для вас, спасая вас от неприятностей.

+0

Но на самом деле вопрос в том, почему Google так проектирует? – shaby

+0

@shaby: Получите работу с Google и спросите их. Никто другой не сможет дать окончательный ответ. – CommonsWare

Смежные вопросы