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