/*
 * Copyright (C) 2007 The Android Open Source Project
 *
 * 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 android.database;

import java.util.ArrayList;

Provides methods for registering or unregistering arbitrary observers in an ArrayList. This abstract class is intended to be subclassed and specialized to maintain a registry of observers of specific types and dispatch notifications to them.
Params:
  • T – The observer type.
/** * Provides methods for registering or unregistering arbitrary observers in an {@link ArrayList}. * * This abstract class is intended to be subclassed and specialized to maintain * a registry of observers of specific types and dispatch notifications to them. * * @param T The observer type. */
public abstract class Observable<T> {
The list of observers. An observer can be in the list at most once and will never be null.
/** * The list of observers. An observer can be in the list at most * once and will never be null. */
protected final ArrayList<T> mObservers = new ArrayList<T>();
Adds an observer to the list. The observer cannot be null and it must not already be registered.
Params:
  • observer – the observer to register
Throws:
/** * Adds an observer to the list. The observer cannot be null and it must not already * be registered. * @param observer the observer to register * @throws IllegalArgumentException the observer is null * @throws IllegalStateException the observer is already registered */
public void registerObserver(T observer) { if (observer == null) { throw new IllegalArgumentException("The observer is null."); } synchronized(mObservers) { if (mObservers.contains(observer)) { throw new IllegalStateException("Observer " + observer + " is already registered."); } mObservers.add(observer); } }
Removes a previously registered observer. The observer must not be null and it must already have been registered.
Params:
  • observer – the observer to unregister
Throws:
/** * Removes a previously registered observer. The observer must not be null and it * must already have been registered. * @param observer the observer to unregister * @throws IllegalArgumentException the observer is null * @throws IllegalStateException the observer is not yet registered */
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 new IllegalStateException("Observer " + observer + " was not registered."); } mObservers.remove(index); } }
Remove all registered observers.
/** * Remove all registered observers. */
public void unregisterAll() { synchronized(mObservers) { mObservers.clear(); } } }