我很熟悉,按下后退键会导致活动被“销毁”,或者当开发人员调用函数完成()或系统时需要记忆等...
还熟悉我们需要在onDestroy中执行清理程序,如 unBindDrawables (请参阅example)以避免OutOfMemory异常。
我的问题是:
活动的破坏是否意味着删除了对活动对象的引用?即活动对象可用于GC吗?如果是这样,为什么我们需要明确删除对活动相关视图的引用?
考虑例子:
如果对象 A 引用对象 B 而 B 仅由 A 引用,则我们取消了 A 的引用,没有必要明确地将 B 的引用设置为null,两者都将GC-ed ...
我的直觉告诉我,活动的情况是这样的......请告诉我我的错误在哪里。
谢谢!
答案 0 :(得分:2)
活动的销毁是否意味着删除了对活动对象的引用?即活动对象可供GC使用吗?
是的,只要Android能够开展活动。如果你从静态上下文中直接或间接地引用它,它就不会被垃圾收集。
如果是,为什么我们需要明确删除对活动相关视图的引用?
您不需要“明确删除对活动相关视图的引用”。
答案 1 :(得分:0)
当您按下后退按钮时,您的应用程序不会被销毁但暂停,SO会调用onPause()方法。 如果SO检测到例如低内存条件然后它会销毁并且将调用onDestroy方法,则可以销毁它。 在这种方法中,你必须清理线程(如果你启动它们)或者不再需要的所有东西并导致资源消耗。 如果你熟悉Servlet,android中的onDestroy方法非常相似。 希望这能帮到你