我想每个人都知道监听器接口模式。我有一个类,其中包含用户可以添加或删除的一些喜欢的项目。
在这堂课中,我有:
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()
}
}
当我只需要使用其中一个监听器时,这很有用,当我使用来自不同setOnFavsChangedListener
的{{1}}时,它们将覆盖最后一个。{1}}。
我的想法是使用Activities
听众,并在我的收视率发生变化时将其全部调用,但很难让ArrayList
变得过大(ArrayList
可能会在每个方向更改/ Activities
)上添加一个侦听器。我可以使用onCreate
ID和听众,让每个HashMap
y删除它的监听器Activit
,但这看起来很笨拙。
TL; DR:当我的Favs发生变化时,几个onDestroy
被告知的优雅方式是什么?
答案 0 :(得分:3)
这对您的用例可能有点过分,但是为了通知类有关事件我使用事件总线(特别是https://github.com/greenrobot/EventBus)。
这使您可以简单地发布消息,并且已注册接收该类消息的每个类都可以获取该消息。使用起来非常简单,就图书馆来说还要小。