幕后的Activity.onDestroy和破坏真正意味着什么?

时间:2012-08-09 20:51:09

标签: android android-activity

我很熟悉,按下后退键会导致活动被“销毁”,或者当开发人员调用函数完成()或系统时需要记忆等...

还熟悉我们需要在onDestroy中执行清理程序,如 unBindDrawables (请参阅example)以避免OutOfMemory异常。

我的问题是:

  

活动的破坏是否意味着删除了对活动对象的引用?即活动对象可用于GC吗?如果是这样,为什么我们需要明确删除对活动相关视图的引用?

考虑例子:

如果对象 A 引用对象 B B 仅由 A 引用,则我们取消了 A 的引用,没有必要明确地将 B 的引用设置为null,两者都将GC-ed ...

我的直觉告诉我,活动的情况是这样的......请告诉我我的错误在哪里。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

活动的销毁是否意味着删除了对活动对象的引用?即活动对象可供GC使用吗?

是的,只要Android能够开展活动。如果你从静态上下文中直接或间接地引用它,它就不会被垃圾收集。

  

如果是,为什么我们需要明确删除对活动相关视图的引用?

您不需要“明确删除对活动相关视图的引用”。

答案 1 :(得分:0)

当您按下后退按钮时,您的应用程序不会被销毁但暂停,SO会调用onPause()方法。 如果SO检测到例如低内存条件然后它会销毁并且将调用onDestroy方法,则可以销毁它。 在这种方法中,你必须清理线程(如果你启动它们)或者不再需要的所有东西并导致资源消耗。 如果你熟悉Servlet,android中的onDestroy方法非常相似。 希望这能帮到你