当你没有使用unbind()时会发生什么?

时间:2017-07-26 15:06:57

标签: android android-layout android-view butterknife

我有一个应用程序,我使用Butterknife,最近我找到了一个片段,我没有在片段的unbinder.unbind()中调用onDestroyView()。我解决了这个问题,但这让我开始思考。

这会导致什么样的错误?为什么?我现在没有特别的错误,但我想知道将来要注意什么,图书馆的网站没有说明这可能导致的问题。

1 个答案:

答案 0 :(得分:2)

想象一下,您有一个retained fragment并且已使用@BindView初始化了一个视图。

发生方向更改,导致销毁活动实例,但不会破坏此片段,因为此片段是保留的片段,这意味着您已初始化的字段仍然存在(不是null)并且强烈提及前一活动的观点,导致活动泄露。

虽然这可能需要花费一些时间(因为最终你将在ButterKnife.bind()中执行另一个onViewCreated(),对吧?但是谁知道,也许你赢了),仍然最好在不需要资源时立即释放资源,让GC完成工作。

我前段时间也考虑过这个问题,除此之外,我无法达到unbind()非常必要的另一种情况。