Android中的侦听器的WeakReference

时间:2017-07-02 14:00:30

标签: java android observer-pattern weak-references

上次我使用模式:

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应该是未注册的强制性。

它有任何实际缺点吗?

0 个答案:

没有答案