【发布时间】:2015-03-16 22:18:12
【问题描述】:
我有工作代码,但我的解决方案似乎不是最优的。我的问题是是否存在我可以使用的通用设计模式。
我有 4 个不同的活动都在播放音频。我有一个管理播放的通用类 (Player),因此当一个活动想要播放时,它会调用 Player 的唯一实例。
无论哪个Activity 当前处于活动状态,我都想显示带有播放信息/控件等的相同覆盖视图。我通过创建一个PlayerView.xml 布局来解决这个问题,我在每个include 布局中Activity。
最后我有一个PlayerListener,我在播放器上注册以接收播放通知。当PlayerListener 收到通知时,它会修改当前活动的Activity 中的PlayerView(例如,在PlayerView 中的TextView 中设置正在播放的曲目名称)。
为了让PlayerListener 知道哪个Activity 是当前活动的,它有一个setParent(ViewGroup parent) 方法,每个Activity 在创建时和onResume 中都调用它来设置自己的布局父级听众。 PlayerListener 然后在 PlayerView.xml 中为每个组件(例如 Button)添加侦听器,并从之前的 Activity 中删除父组件的侦听器。
对我来说,我对于活动之间的每次更改都必须添加/删除一堆侦听器似乎效率低下,但是(afaiu)因为每个include 创建引用布局的副本,这意味着PlayerView 在布局它包含我需要这样做(可能跳过侦听器的删除,但这可能会在扩展到更多活动时产生性能问题)。
我知道我可以让一个 Activity 超类在一个地方执行此操作,但这并不能消除不断添加/删除侦听器的潜在问题。有没有更好的标准方法?
谢谢!
【问题讨论】:
标签: java android android-layout architecture