У меня есть рабочий код, но мое решение не кажется оптимальным. Мой вопрос в том, что для этого есть шаблон дизайна comon, который я мог бы использовать вместо этого.Дизайн шаблона для общего вида наложения
У меня есть 4 разных вида деятельности, все делают воспроизведение звука. У меня есть один общий класс (Player
), который управляет воспроизведением, поэтому, когда активность хочет воспроизвести, он вызывает только один экземпляр Player
.
Независимо от того, который Activity
активна в данный момент я не хочу, чтобы отобразить один и тот же вид наложения с воспроизведением информации/управления и т.д. Это я решаемой создать макет PlayerView.xml который я include
в каждом Activity
макете.
Последнее, что у меня есть PlayerListener
, который я зарегистрирую на проигрывателе, чтобы получать уведомления о воспроизведении. Когда PlayerListener
получает уведомление, он изменяет PlayerView
в текущем активном Activity
(например, устанавливает имя дорожки воспроизведения в TextView
в PlayerView
).
Для того, чтобы PlayerListener
знать, какие Activity
, что является в настоящее время активный он имеет метод setParent(ViewGroup parent)
который каждый Activity
вызовов как при создании и в onResume
, чтобы установить свой собственный родительский макет для слушателя. Затем PlayerListener
добавляет слушатели для каждого компонента (например, Button) в PlayerView.xml и удаляет слушателей для родителя с предыдущего Activity
.
мне кажется неэффективным, что я за каждое изменение между деятельностью необходимо добавить/удалить кучу слушателей, но (afaiu), поскольку каждый include
создает копию ссылочного макета, означая PlayerView
является уникальным в макете оно Я должен сделать это таким образом (возможно, пропустить удаление слушателей, но это может создать проблемы с производительностью при увеличении количества действий).
Я понимаю, что у меня есть суперкласс класса, который делает это в одном месте, но это не устраняет потенциальную проблему постоянного добавления/удаления слушателей. Есть ли лучший, стандартный способ сделать это?
Спасибо!
Я думал, что у фрагментов будет такая же проблема с добавлением/удалением слушателей, когда они будут разделены между различными действиями, но, может быть, я неправильно понял это ...? – jola