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