-1

我想在活动结束时调用onDestroy() 。
这是我放的:

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

但是,它永远不会被调用。事实上,当我使用自动完成时,onDestroy 永远不会出现......但是 onPause、onCreate、onStop .... 是的

那么我在这里想念什么吗?毕竟我可能太傻了……

4

3 回答 3

3

你应该打电话finish()

onDestroy 是自动调用的,尽管你不应该依赖被调用。

销毁():

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

于 2012-08-01T13:03:16.287 回答
0

onDestroy 可能不会被调用

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

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

于 2012-08-01T13:13:00.393 回答
0

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

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

于 2012-08-01T13:39:32.360 回答