Мы говорим Android здесь. Мы смоделировали нашу архитектуру с использованием подхода Model-View-Presenter, и мы затронули проблему относительно слабых ссылок.Нужно ли использовать значение WeakReference для циклической зависимости?
сверхбыстрой:
- Presenter обрабатывает логику, сетевые вызовы и т.д.
- Просмотров ручки, показывая данные на экране, отображая загрузку баров и т.д.
активность/Фрагмент классы имеют ссылку на ведущий . ведущий классы содержат ссылку на вид классы.
Наши вид clases фактически те интерфейсы, как правило, осуществляется с помощью деятельности/Фрагмент. Это означает круговую зависимость между Activity/Fragment -> presenter
и presenter -> view (an Activity/Fragment)
. По этой причине мы сделали presenter
держателем слабым эталоном до view (Activity/Fragment)
.
Сегодня нам нужно использовать 2 взгляды в том же Activity
(для отображения различных моделей-данных), поэтому мы не implements
он сделал на Activity
но создал 2 анонимного класса. Это закончилось в presenter
, потеряв ссылки view
(потому что это слабая ссылка).
Сейчас мы оцениваем 2:
максимальных возможности- Мы на самом деле не нужны
presenters
провестиWeakReference
наView
причин этого типа круговой зависимости не будет утечкой памяти. - Вместо использования анонимных классов мы держим ссылки на
Activity
(так что у обоих докладчиков и действий есть ссылка на просмотр) только ради этого не освобождается (что кажется вонючим).
Какая из них, нам нужен презентатор, чтобы удерживать представление в качестве слабой ссылки?