ondestroy不总是被称为?

yea*_*man 6 android ondestroy

我已经在onDestroy我的活动中添加了一些缓存清理代码,但大部分时间代码都没有执行,除非我通过显式完成活动finish().

编辑:只读或onDestroyfinish()在系统资源不足时调用.那么我需要在哪里放置缓存清理代码?如果我将其放入onPause()并且用户返回应用程序,则清除缓存.我实际上是将重要的临时文件存储在不应删除的缓存中onPause.

med*_*eda 13

来自Android开发者文档:

protected void onDestroy()

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

注意:不要指望这种方法被称为保存数据的地方!例如,如果某个活动正在编辑内容提供程序中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在此处.通常实现此方法是为了释放与活动相关联的线程之类的资源,以便在其应用程序的其余部分仍在运行时,被破坏的活动不会留下这些东西.在某些情况下,系统会简单地杀死活动的托管进程,而不会在其中调用此方法(或任何其他方法),因此它不应该用于执行在进程消失后保留的内容.

您可以将代码移动到onPause()onStop()

  • 所以你说我删除`onPause`中所有已调整大小的图像并在`onResume`中重新创建它们?可能会发生500个图像.....每次需要一些时间来调整它们,它不是真正用户友好的imo (3认同)