缺少onDestroy。自动完成对我没有帮助

时间:2012-08-01 13:02:09

标签: android ondestroy

我想在活动结束时调用 onDestroy() 这就是我的意思:

@Override
protected void onDestroy()
{
    unbindDrawables(findViewById(R.id.rootView));
    super.onDestroy();
    System.gc();
}

但是,它从未被调用过。的确,当我使用自动完成时,onDestroy永远不会出现...... 但onPause,onCreate,onStop .... yes

我在这里想念一下吗?毕竟我可能真是太蠢了......

3 个答案:

答案 0 :(得分:3)

您应该致电finish()

onDestroy会自动调用,但你不应该依赖于被调用。

的onDestroy():

  

在您的活动被销毁之前收到的最后一个电话。这可能是因为活动正在完成(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。

答案 1 :(得分:0)

onDestroy可能未被调用

  

注意:不要指望将此方法称为保存地点   数据!例如,如果活动正在编辑内容中的数据   提供者,这些编辑应该在onPause()或   onSaveInstanceState(Bundle),不在这里。这种方法通常是   实现释放资源,如与线程相关联的线程   活动,以便被破坏的活动不会留下这样的东西   当其余的应用程序仍在运行时。 有   系统将简单地杀死活动的托管的情况   没有在其中调用此方法(或任何其他方法)的过程,所以它   不应该被用来做那些打算留下来的东西   过程消失后。

     

派生类必须调用超类的实现   这种方法。如果他们不这样做,将抛出异常。

答案 2 :(得分:0)

感谢大家的帮助。 我现在明白可能不会调用onDestroy。

我不知道为什么,但现在Eclipse提示我onDestroy方法。 所以它被召唤但不是我想要的地方。