首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ondestroy不是总是被调用吗?

ondestroy不是总是被调用吗?
EN

Stack Overflow用户
提问于 2013-10-27 00:20:12
回答 3查看 12K关注 0票数 8

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-27 00:23:19

来自Android developer documentation

protected void onDestroy ()

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

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

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

票数 16
EN

Stack Overflow用户

发布于 2013-10-27 00:25:54

尝试使用onstop

像这样

代码语言:javascript
复制
@Override
    protected void onStop() {
        super.onStop();
       //write your code here
    }
票数 3
EN

Stack Overflow用户

发布于 2013-10-27 00:24:44

ondestroy主要在系统从内存中完全删除活动时调用,或者当用户终止活动时,您希望将数据保存在on pause中,因为它总是在销毁之前调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19608948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档