8

onDestroy我在我的活动中放入了一些缓存清理代码,但大多数时候代码不会执行,除非我通过finish().

编辑:仅在系统资源不足或系统资源不足onDestroy时才调用Just read 。finish()那么我需要把我的缓存清理代码放在哪里呢?如果我将其放入onPause()并且用户返回应用程序,则缓存将被清除。我实际上将重要的临时文件存储在不应在onPause.

4

3 回答 3

16

来自 Android 开发者文档

受保护的无效 onDestroy ()

在 API 级别 1 中添加 在销毁活动之前执行任何最终清理。这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

注意:不要指望这个方法被称为保存数据的地方!例如,如果一个活动正在内容提供者中编辑数据,那么这些编辑应该在 onPause() 或 onSaveInstanceState(Bundle) 中提交,而不是在这里。此方法通常用于释放资源,例如与活动关联的线程,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西。在某些情况下,系统会简单地终止 Activity 的宿主进程,而不会在其中调用此方法(或任何其他方法),因此不应使用它来执行打算在进程消失后保留的事情。

您可以将代码移至onPause()onStop()

于 2013-10-26T16:23:18.803 回答
3

尝试使用 onstop

像这样

@Override
    protected void onStop() {
        super.onStop();
       //write your code here
    }
于 2013-10-26T16:25:53.770 回答
1

ondestroy 通常在系统从内存中完全删除活动时调用,或者当用户终止活动时,您希望在暂停时保存数据,因为它将始终在销毁之前调用。

于 2013-10-26T16:24:44.423 回答