/* * Copyright 2015 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.agera; /** * Passes on updates from an {@link Updatable#update} call to any {@link Updatable} added using * {@link Observable#addUpdatable}. It should be possible to call {@link UpdateDispatcher#update} * from any thread. * * <p>This interface should typically not be implemented by client code; the standard * implementations obtainable from {@link Observables#updateDispatcher} help implement * {@link Observable}s adhering to the contract. * * Agera 中抽象出来的 观察者调度者 接口 * 由于自身 继承了 被观察者( Observable )接口 和 观察者( Updatable )接口 * 所以自身就能够拥有两者的功能 * 使用场景有: * 一个 Activity 继承了 观察者( Updatable )接口 * 一个 BroadcastReceiver 继承了 被观察者( Observable )接口 * 这个 BroadcastReceiver 持有一个 UpdateDispatcher 的引用 * * 这个 UpdateDispatcher 通过 观察者( Updatable )接口的功能 去添加 一个 观察者( Updatable ) -> Activity * * 然后: * Activity 发送广播 * BroadcastReceiver 的 onReceive(...) 接受到该广播 * 调用 UpdateDispatcher 的通过自身的被观察者功能去 调用 已经添加的 观察者( Updatable )的 update * * 这个接口,一般不能不能由开发者去实现其功能,而是通过 Observables.updateDispatcher(...) 获取一个对象 */ public interface UpdateDispatcher extends Observable, Updatable {}