onDestroy() 是在活動被銷毀之前執行最后的清理。
根據官方文檔的介紹,onDestroy() 是在活動被銷毀之前執行最后的清理。這可能是因為活動正在完成(有人在其上調用了 finish() 方法),也可能是因為系統為了節省空間而臨時銷毀了活動的這個實例。您可以使用 isFinishing() 方法來區分這兩個場景。
注意:不要指望調用此方法來保存數據! 例如,如果一個活動正在內容提供者中編輯數據,那么這些編輯應該在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在這里提交。此方法通常用於釋放與某個活動關聯的線程等資源,以便被銷毀的活動在其應用程序的其余部分仍在運行時不會留下這些資源。在某些情況下,系統只會在不調用此方法(或任何其他方法)的情況下終止活動的宿主進程,因此不應該使用它來做一些在進程結束后仍然存在的事情。
派生類必須通過超類來調用此方法的實現。如果沒有,則拋出異常。
super.onDestroy() 干了三件事:
- dismiss 所有我們管理着的 Dialog。
- 關閉我們正管理着的 Cursor。
- 關閉任何打開着的搜索對話框
- 將該Activity從棧中刪除
為了防止空異常的出現,我們需要將 ‘我們自己的方法’ 放在 super.onDestroy() 方法上面,比如:
@Override protected void onDestroy() { // 我們自己的方法。 super.onDestroy();
