首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android Service 綁定生命週期:onServiceDisconnected 何時觸發?

     編輯:程式設計疑難解答

常見誤區

調用 unbindService(connection) 后,期望 onServiceDisconnected() 被回調,實際不會觸發。

官方文檔定義

onServiceDisconnected() 僅在連接意外斷開時調用,例如:

  • Service 所在進程被系統殺死(內存不足)。
  • Service 拋出未捕獲異常崩潰。
  • 通過 stopService() 停止 Service 且有綁定未解除。

正常調用 unbindService() 屬于有序斷開,不觸發此回調。

正確清理邏輯

  • 在 unbindService() 后立即執行清理代碼(釋放引用、取消註冊監聽)。
  • 若需感知 Service 端主動斷開,可在 Service onUnbind() 返回 true 并調用 rebind 機制,但極少使用。

生命週期圖解

bindService() → onServiceConnected() → [正常交互] → unbindService() → onServiceDisconnected() ✗
bindService() → onServiceConnected() → [Service Crash/Kill] → onServiceDisconnected() ✓
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved