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