1

我想每个人都知道侦听器接口模式。我有一堂课,里面有一些用户可以添加或删除的最喜欢的项目。

在这堂课中,我有:

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()
    }
}

当我只需要使用其中一个侦听器时,这非常有用,当我使用setOnFavsChangedListenerfrom different时Activities,它们将覆盖最后一个。

我的想法是使用一个ArrayList监听器并在我的 Favs 更改时调用它们,但是很难不让监听器ArrayList变得太大(Activities可能会在每次方向更改时添加一个监听器 / onCreate)。我可以使用一个HashMapID 和侦听器,让每个Activity 删除它的侦听器onDestroy,但这似乎很笨拙。

ActivitiesTL;DR:当我的收藏发生变化时,通知几个人的优雅方式是什么?

4

1 回答 1

3

This may be overkill for your use case, but for notifying classes about events I use an event bus (specifically https://github.com/greenrobot/EventBus).

This allows you to simply post a message and every class that has registered to receive that type of message gets it. Very simple to use, and pretty small as far as libraries go.

于 2013-06-11T15:15:11.373 回答