onDestroy() 是在活动被销毁之前执行最后的清理。
根据官方文档的介绍,onDestroy() 是在活动被销毁之前执行最后的清理。这可能是因为活动正在完成(有人在其上调用了 finish() 方法),也可能是因为系统为了节省空间而临时销毁了活动的这个实例。您可以使用 isFinishing() 方法来区分这两个场景。
注意:不要指望调用此方法来保存数据! 例如,如果一个活动正在内容提供者中编辑数据,那么这些编辑应该在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在这里提交。此方法通常用于释放与某个活动关联的线程等资源,以便被销毁的活动在其应用程序的其余部分仍在运行时不会留下这些资源。在某些情况下,系统只会在不调用此方法(或任何其他方法)的情况下终止活动的宿主进程,因此不应该使用它来做一些在进程结束后仍然存在的事情。
派生类必须通过超类来调用此方法的实现。如果没有,则抛出异常。
super.onDestroy() 干了三件事:
- dismiss 所有我们管理着的 Dialog。
- 关闭我们正管理着的 Cursor。
- 关闭任何打开着的搜索对话框
- 将该Activity从栈中删除
为了防止空异常的出现,我们需要将 ‘我们自己的方法’ 放在 super.onDestroy() 方法上面,比如:
@Override protected void onDestroy() { // 我们自己的方法。 super.onDestroy();