当前位置: 首页 > 知识库问答 >
问题:

ondestroy不总是被调用吗?

慕容宏邈
2023-03-14

我在活动的ondestroy中放置了一些缓存清理代码,但大多数情况下,除非通过finish()显式地完成活动,否则这些代码不会执行。

编辑:只读ondestroy仅在finish()或系统资源不足时调用。那么我需要把我的缓存清理代码放在哪里呢?如果我把它放在onpause()中,用户返回到应用程序,缓存就会被清除。我实际上是在缓存中存储重要的临时文件,这些文件不应该在onpause中删除。

共有1个答案

萧修永
2023-03-14

来自Android开发人员文档:

受保护的空onDestroy()

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

 类似资料:
  • 问题内容: 一个简单的问题:您确定可以致电吗?我没有找到任何确认。 问题答案: 一个简单的问题:您可以确定finish()将调用onDestroy()吗? 首先,此答案假定您正在引用Android的类及其方法和生命周期方法。 其次,这取决于您对“确定”的定义: 您的流程可能在和之间终止,原因与触发调用的原因无关 设备制造商或ROM修改器可能会引入一些螺钉更改,从而破坏与 电池可能在和之间耗尽 等等

  • 当我在viewPager中从其相邻片段(0,2)中滑动到或选择Fragment1(片段编号为0-3)时,它的onCreateView或onCreate函数未被调用。 但是当我从Fragment3回扫或者选择Fragment1(当Fragment3是活动的)时,这两个函数都被调用了。我很困惑为什么不从相邻的片段中调用它。 这是未正确调用onCreateView的片段的代码 //Toast.MakeT

  • 我在学习保存的InstanceState捆绑包时感到困惑。我发现,在调用onDestroy()方法后,活动实例没有被销毁,或者它可以在没有SavedInstanceState Bundle帮助的情况下保存数据。 这是我的测试代码: 这里是日志信息: 除非我在手机上完全杀死进程,否则testNum永远不会返回到1,在我看来,活动实例并没有真正被销毁,所以我们不需要重写onSaveInstanceSt

  • 我正在用Java开发一个俄罗斯方块克隆,在我想要清除整行并删除上面的所有内容之前,一切似乎都正常工作。虽然我所有的数据都正确地表示了转换,但我的paintComponent方法似乎只清除了行,但上面显示的所有内容都保持在repaint()调用之前的状态。新的碎片将穿过幻影积木,落在最下面一排的隐形积木上,上面的碎片会落在那里。 这是我的油漆成分方法: 这是计时器侦听器中actionPerforme

  • 我有一个ArrayList,它应该在包含0个以上对象时启动报警服务,在包含0个对象时停止报警服务。 这是报警服务类。 这是on Receive方法广播接收器类 问题是,即使调用了报警服务的onDestroy方法,通知也不会停止。 我错过什么了吗? 谢谢

  • 我是spring webflux和reactor的新手,我希望在发生某些特定异常时有一个回退机制,根据我的研究,onErrorResume方法可以做到这一点,但它不会被调用,我得到500个内部服务器错误,而不是触发回退并阻止此错误。 注意:我使用Spring网络流量,这意味着它在Reactor项目的正常行为中做了一些改变 这是堆栈跟踪