我在我的活动onDestroy
中添加了一些缓存清理代码,但大部分时间代码都没有执行,除非我通过finish()
明确完成了活动。
编辑:只需使用onDestroy
或系统资源不足,即可阅读finish()
。那么我需要在哪里放置缓存清理代码?如果我将其放入onPause()
并且用户返回应用程序,则清除缓存。我实际上是将重要的临时文件存储在缓存中,不应该在onPause
中删除。
答案 0 :(得分:12)
来自Android开发者documentation:
protected void onDestroy()
在API级别1中添加在活动开始之前执行任何最终清理 销毁。这可能是因为活动正在结束 (有人称之为完成(),或者系统是暂时的 销毁此活动实例以节省空间。您可以 使用isFinishing()方法区分这两种情况。
注意:不要指望这种方法被称为作为保存的地方 数据!例如,如果活动正在编辑内容中的数据 提供者,这些编辑应该在onPause()或 onSaveInstanceState(Bundle),不在这里。这种方法通常是 实现释放资源,如与线程相关联的线程 活动,以便被破坏的活动不会留下这样的东西 当其余的应用程序仍在运行时。有 系统将简单地杀死活动的托管的情况 进程中没有调用此方法(或任何其他方法),所以它 不应该被用来做那些打算留下来的东西 过程消失后。
您可以将代码移至onPause()
或onStop()
答案 1 :(得分:3)
尝试使用onstop
像这样@Override
protected void onStop() {
super.onStop();
//write your code here
}
答案 2 :(得分:1)
ondestroy主要在系统从内存中完全删除活动时调用,或者当用户杀死活动时,您希望在暂停时保存数据,因为在销毁之前总是会调用它。