Android——Observable——源码注释翻译:Observable类的官方解释——秒懂

总结:这个就是用来注册、取消注册观察者的。只不过它可传入的观察者是用的泛型。意味着你可以创造出你想要的观察者来传入,可以灵活定制。

(下一篇文章会基于RecycleView的观察者模式来讲述这个类的具体使用和实现)


public abstract class Observable

这个类用一个ArrayList来维护所有的观察者,是专门用来管理观察者的类。

在这个类中,提供注册和取消注册观察者的方法。

此外,这是一个抽象类,使用者应该继承这个类去使用。

所有的观察者都能接收通知。

这个泛型T指代的是观察者类型,这需要你自定义的一个观察者类。

 

protected finalArrayList mObservers = new ArrayList();

 

//注册一个观察者(其实就是在这个集合中添加一个观察者对象)。前提是这个观察者不能为空。

public void registerObserver(T observer) {

       if (observer == null) {

           throw new IllegalArgumentException("The observer is null.");

       }

        //锁住这个存放观察者的ArrayList的资源

       synchronized(mObservers) {

            //不能重复添加相同的观察者

           if (mObservers.contains(observer)) {

                throw newIllegalStateException("Observer " + observer + " is alreadyregistered.");

           }

           mObservers.add(observer);

       }

}

 

//和上面那个方法相反,取消对于观察者的注册。观察者必须是非空的并且是已经注册了的观察者才能取消注册。

public void unregisterObserver(T observer){

       if (observer == null) {

           throw new IllegalArgumentException("The observer is null.");

       }

       synchronized(mObservers) {

           int index = mObservers.indexOf(observer);

           if (index == -1) {

                throw newIllegalStateException("Observer " + observer + " was notregistered.");

           }

           mObservers.remove(index);

       }

}

 

//移除所有观察者

public void unregisterAll() {

       synchronized(mObservers) {

           mObservers.clear();

       }

    }


你可能感兴趣的:(Android)