Сервис Android: onBind (Intent) и onUnbind (Intent) вызывается только один раз
У меня есть активность и сервис. Когда активность запускается, она вызываетstartService()
сделать эту Службу живой, даже когда Деятельность уничтожена, иbindService()
, для связи с этим Сервисом.
bindService()
возвращает истину,mService.onBind()
называется, иServiceConnection.onServiceConnected()
тоже называется. Все работает.
Когда я уничтожаю свою активность, нажимая клавишу Назад, она вызываетunbindService()
, и мойmService.onUnbind()
называется. (я возвращаюсьfalse
в этомonUnbind()
.)
Затем я снова начинаю это занятие,bindService()
возвращает истину, а затемmService.onBind()
являетсяНЕ называется! НоServiceConnection.onServiceConnected()
тоже называется, и все снова работает.
Похоже, Далвик помнит, что мойonBind()
вернулся в прошлый раз и просто не звонилonBind()
очередной раз. Когда я снова разрушу свою деятельность,onUnbind()
являетсяНЕ тоже звонил.
Я могу связывать и отменять привязку этого Сервиса к моей Деятельности любое количество раз, но эти методы больше не будут вызываться до тех пор, пока я не уничтожу Сервис путем открепления и вызоваstopService()
.
В документах я не могу найти объяснения этому поведению. Наоборот,эта фигура показывает, чтоonBind()
а такжеonUnbind()
должен вызываться каждый раз, когда клиенты связывают и отменяют привязку Сервиса. Эта цифра может быть найдена на днеэто руководство для разработчиков.