您的位置:首页 > 移动开发 > Android开发

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

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

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

public abstract class Observable<T>

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

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

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

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

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

 

protected finalArrayList<T> mObservers = new ArrayList<T>();

 

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

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

       }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: