上次我使用模式:
interface Listener {
void happened();
}
class Stuff {
private ArrayList<WeakReference<Listener>> mListeners = new ArrayList<>();
public void addListener(Listener listener){
mListeners.add(new WeakReference<>(listener));
}
protected void notifyListeners(){
int i = 0;
Listener listener;
while(i<mListeners.size()){
listener = mListeners.get(i).get();
if(listener == null)
mListeners.remove(i);
else{
listener.happened();
i++;
}
}
}
}
我看到这样的方式非常方便,但为什么这么多Android的部件不会使用类似的?例如,BroadcastReseiver
应该是未注册的强制性。
它有任何实际缺点吗?