2

在寻找存储和通知侦听器的最佳方式(弱引用与强引用,匿名侦听器与垃圾收集器)时,我看了一下 Google 如何实现他们的侦听器。以下来自 FragmentManager 类的代码:

ArrayList<OnBackStackChangedListener> mBackStackChangeListeners;

public void removeOnBackStackChangedListener(OnBackStackChangedListener listener) {
    if (mBackStackChangeListeners != null) {
        mBackStackChangeListeners.remove(listener);
    }
}

void reportBackStackChanged() {
    if (mBackStackChangeListeners != null) {
        for (int i=0; i<mBackStackChangeListeners.size(); i++) {
           mBackStackChangeListeners.get(i).onBackStackChanged();
        }
    }
}

如果在其 中删除了一个侦听器onBackStackChanged,则类似于:

@Override
void onBackStackChanged()
{
    mFragmentManager.removeOnBackStackChangedListener(this);
}

在我看来,ArrayList 中的下一个侦听器将被跳过。

我错过了什么吗?这是不应该做的事情吗?

4

0 回答 0