我有一个应用程序,我使用Butterknife,最近我找到了一个片段,我没有在片段的unbinder.unbind()
中调用onDestroyView()
。我解决了这个问题,但这让我开始思考。
这会导致什么样的错误?为什么?我现在没有特别的错误,但我想知道将来要注意什么,图书馆的网站没有说明这可能导致的问题。
答案 0 :(得分:2)
想象一下,您有一个retained fragment并且已使用@BindView
初始化了一个视图。
发生方向更改,导致销毁活动实例,但不会破坏此片段,因为此片段是保留的片段,这意味着您已初始化的字段仍然存在(不是null
)并且强烈提及前一活动的观点,导致活动泄露。
虽然这可能需要花费一些时间(因为最终你将在ButterKnife.bind()
中执行另一个onViewCreated()
,对吧?但是谁知道,也许你赢了),仍然最好在不需要资源时立即释放资源,让GC完成工作。
我前段时间也考虑过这个问题,除此之外,我无法达到unbind()
非常必要的另一种情况。