我想每个人都知道监听器接口(interface)模式。我有一个类,其中包含用户可以添加或删除的一些最喜欢的项目。
在这门课上我有:
public static OnFavsChangedListener onFavsChangedListener;
public interface OnFavsChangedListener {
abstract void onFavsChanged();
}
public static void setOnFavsChangedListener(
OnFavsChangedListener listener) {
onFavsChangedListener = listener;
}
public void addToFavorites () {
if (onFavsChangedListener != null) {
onFavsChangedListener.onFavsChanged()
}
}
当我只需要使用其中一个监听器时,这非常有效,当我使用来自不同 Activities
的 setOnFavsChangedListener
时,它们将覆盖最后一个。
我的想法是使用一个 ArrayList
监听器并在我的 Favs 改变时调用它们,但是很难不让 ArrayList
变得太大( Activity
可能会在每次方向更改时添加一个监听器/onCreate
)。我可以使用 ID 和监听器的 HashMap
,让每个 Activit
y 删除它的监听器 onDestroy
,但这看起来很笨拙。
TL;DR:当我的 Fav 发生变化时,有什么优雅的方式可以通知多个 Activity
?
最佳答案
这对于您的用例来说可能有点矫枉过正,但是为了通知类有关事件我使用事件总线(特别是 https://github.com/greenrobot/EventBus )。
这允许您简单地发布一条消息,并且每个已注册接收该类型消息的类(class)都会收到它。使用起来非常简单,就库而言非常小。
关于android - 一个类(class)的多个听众,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17047627/