Frage Was passiert genau dann, wenn Sie unbind () nicht verwenden?


Ich habe eine App, in der ich Butterknife benutze, und vor kurzem habe ich ein Fragment gefunden, bei dem ich nicht angerufen hatte unbinder.unbind() im Fragment onDestroyView(). Ich habe das Problem behoben, aber es hat mich zum Nachdenken gebracht.

Welche Art von Fehlern kann das verursachen und warum? Ich habe momentan keinen bestimmten Fehler, aber ich würde gerne wissen, worauf ich in Zukunft achten muss, und die Website für die Bibliothek gibt nicht die Probleme an, die dies verursachen könnte.


5
2017-07-26 15:06


Ursprung


Antworten:


Stellen Sie sich vor, Sie haben eine zurückgebliebenes Fragment und Sie haben eine View mit initialisiert @BindView.

Es kommt zu einer Orientierungsänderung, die dazu führt, dass die Aktivitätsinstanz, aber nicht dieses Fragment zerstört wird, weil dieses Fragment ein beibehaltenes Fragment ist, dh dass das Feld, das Sie initialisiert haben, immer noch da ist (nicht null) und bezieht sich stark auf die Sichtweise der vorherigen Aktivität, die zu einem Verlust der Aktivität führt.

Obwohl dies einige Zeit dauern könnte (weil Sie schließlich einen anderen durchführen werden) ButterKnife.bind() im onViewCreated(), Recht? Aber wer weiß, vielleicht wirst du es nicht), es ist dennoch besser, Ressourcen freizugeben, sobald du sie nicht brauchst und den GC seine Arbeit machen lässt.

Ich habe auch über diese Frage vor einiger Zeit nachgedacht und abgesehen davon konnte ich nicht zu einem anderen Szenario kommen, in dem unbind() wäre dringend notwendig.


2
2017-08-30 07:29