我已经在我的活动的onDestroy中放置了一些缓存清理代码,但大多数情况下,除非我通过finish()显式地完成活动,否则这些代码不会被执行。
编辑:仅当使用finish()或系统资源不足时才调用read onDestroy。那么我需要把缓存清理代码放在哪里呢?如果我把它放到onPause()中,用户回到应用程序,缓存就会被清除。实际上,我将重要的临时文件存储在缓存中,这些文件不应该在onPause中删除。
发布于 2013-10-27 00:23:19
来自Android developer documentation
protected void onDestroy ()
在API级别1中添加,在销毁活动之前执行任何最终清理。这可能是因为活动正在结束(有人在其上调用finish() ),也可能是因为系统临时销毁了活动的此实例以节省空间。您可以使用isFinishing()方法区分这两种场景。
注意:不能指望这个方法被称为作为保存数据的地方!例如,如果一个活动正在编辑内容提供者中的数据,那么这些编辑应该在onPause()或onSaveInstanceState(Bundle)中提交,而不是在这里。此方法通常用于释放资源,如与活动关联的线程,这样被销毁的活动在其应用程序的其余部分仍在运行时不会留下这些东西。在某些情况下,系统会简单地终止活动的宿主进程,而不调用其中的此方法(或任何其他方法),因此不应使用它来执行在进程消失后仍保留的事情。
您可以将代码移动到onPause()或onStop()
发布于 2013-10-27 00:25:54
尝试使用onstop
像这样
@Override
protected void onStop() {
super.onStop();
//write your code here
}发布于 2013-10-27 00:24:44
ondestroy主要在系统从内存中完全删除活动时调用,或者当用户终止活动时,您希望将数据保存在on pause中,因为它总是在销毁之前调用。
https://stackoverflow.com/questions/19608948
复制相似问题