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

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

(下一篇文章会基于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();

       }

    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值