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

Android Activity 生命週期:onStop 與 onDestroy 觸發條件詳解

     編輯:程式設計疑難解答

生命週期回調對照

場景回調序列說明
用戶按 **Back 鍵**`onPause` → `onStop` → `onDestroy`Activity 結束,銷毀
用戶按 **Home 鍵** / 切換應用`onPause` → `onStop`Activity 進入後台,**不銷毀**
啟動新 Activity(覆蓋全屏)`onPause` → `onStop`舊 Activity 可見 → 不可見
彈出 Dialog / 部分覆蓋`onPause`僅失去焦點,仍可見
系統內存不足回收後台進程`onPause` → `onStop` → `onDestroy`低內存殺手回收
調用 `finish()``onPause` → `onStop` → `onDestroy`主動結束
配置變更(旋轉屏幕等)`onPause` → `onStop` → `onDestroy` → `onCreate` → `onStart` → `onResume`默認重建

核心區別

  • `onStop`**:Activity **完全不可見**(被遮蓋、切後台)。適合釋放較重資源(註冊表、網絡連接),但保留 UI 狀態以便快速恢復。
  • `onDestroy`**:Activity **即將銷毀**(結束、重建、系統殺進程)。**必須**釋放所有資源(線程、Cursor、傳感器、Bitmap、Handler 消息),否則內存洩漏。

最佳實踐

  • 在 `onStop` 保存輕量狀態(`SharedPreferences`、ViewModel)。
  • 在 `onDestroy` 徹底清理:`unregisterReceiver`、`handler.removeCallbacksAndMessages(null)`、`cursor.close()`、`bitmap.recycle()`(API<21)。
  • 不要在 `onDestroy` 執行耗時操作(網絡、IO),系統不保證執行完成。
  • 使用 `ViewModel` + `LiveData` 自動處理配置變更重建,減少手動生命週期管理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved