2017-07-26 84 views
5

我有一個應用程序,我使用Butterknife,最近我發現了一個片段,我沒有在片段的onDestroyView()中調用unbinder.unbind()。我解決了這個問題,但這讓我開始思考。當你使用unbind()失敗時會發生什麼?

這會導致什麼樣的錯誤,爲什麼?我現在沒有特別的錯誤,但我希望知道未來需要注意什麼,圖書館的網站並未說明可能導致的問題。

回答

2

想象一下,您有一個retained fragment,並且您已使用@BindView初始化視圖。

發生了方向更改,導致活動實例被銷燬,但不是此片段,因爲此片段是保留的片段,這意味着您已初始化的字段仍然存在(不是null)並且正在持有強烈提及前一次活動的觀點,結果導致活動泄露。

雖然這可能需要一些時間(因爲最終你會在onViewCreated()中執行另一個ButterKnife.bind(),對吧?但是誰知道,也許你不會),還是最好儘快釋放資源你不需要它們,讓GC完成它的工作。

我也在前段時間想過這個問題,除此之外,我無法想出unbind()將是非常必要的另一種情況。

相關問題