Android-сервис: onBind (Intent) и onUnbind (Intent) вызывается только один раз

У меня есть 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 () должны вызываться каждый раз, когда клиенты связывают и отключают службу. Этот рисунок можно найти в конце настоящего Руководства разработчика .

41
задан Michael Kohne 20 August 2014 в 13:51
поделиться