調用 unbindService(connection) 后,期望 onServiceDisconnected() 被回調,實際不會觸發。
onServiceDisconnected()僅在連接意外斷開時調用,例如:
- Service 所在進程被系統殺死(內存不足)。
- Service 拋出未捕獲異常崩潰。
- 通過
stopService()停止 Service 且有綁定未解除。
正常調用 unbindService() 屬于有序斷開,不觸發此回調。
unbindService() 后立即執行清理代碼(釋放引用、取消註冊監聽)。onUnbind() 返回 true 并調用 rebind 機制,但極少使用。bindService() → onServiceConnected() → [正常交互] → unbindService() → onServiceDisconnected() ✗
bindService() → onServiceConnected() → [Service Crash/Kill] → onServiceDisconnected() ✓