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

dra*_*ity 5 android android-layout android-view butterknife

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

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

azi*_*ian 2

假设您有一个保留的片段,并且您已经使用 初始化了一个视图@BindView

发生方向更改,这会导致破坏活动实例,但不会破坏此片段,因为此片段是保留片段,这意味着您已初始化的字段仍然存在(不是null)并且持有对视图的强引用先前活动的信息,这会导致活动泄漏。

尽管这可能需要一些时间(因为最终您将ButterKnife.bind()在 中执行另一个onViewCreated()操作,对吧?但谁知道呢,也许您不会),但最好在不需要资源时立即释放它们,并且让 GC 完成它的工作。

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