ContentObservable.java revision 86de0590b94bcce27e3038c27464bed510bb564a
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.database; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 2086de0590b94bcce27e3038c27464bed510bb564aJeff Brown * A specialization of {@link Observable} for {@link ContentObserver} 2186de0590b94bcce27e3038c27464bed510bb564aJeff Brown * that provides methods for sending notifications to a list of 2286de0590b94bcce27e3038c27464bed510bb564aJeff Brown * {@link ContentObserver} objects. 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ContentObservable extends Observable<ContentObserver> { 2586de0590b94bcce27e3038c27464bed510bb564aJeff Brown // Even though the generic method defined in Observable would be perfectly 2686de0590b94bcce27e3038c27464bed510bb564aJeff Brown // fine on its own, we can't delete this overridden method because it would 2786de0590b94bcce27e3038c27464bed510bb564aJeff Brown // potentially break binary compatibility with existing applications. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void registerObserver(ContentObserver observer) { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.registerObserver(observer); 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3486de0590b94bcce27e3038c27464bed510bb564aJeff Brown * Invokes {@link ContentObserver#dispatchChange} on each observer. 3586de0590b94bcce27e3038c27464bed510bb564aJeff Brown * 3686de0590b94bcce27e3038c27464bed510bb564aJeff Brown * If <code>selfChange</code> is true, only delivers the notification 3786de0590b94bcce27e3038c27464bed510bb564aJeff Brown * to the observer if it has indicated that it wants to receive self-change 3886de0590b94bcce27e3038c27464bed510bb564aJeff Brown * notifications by implementing {@link ContentObserver#deliverSelfNotifications} 3986de0590b94bcce27e3038c27464bed510bb564aJeff Brown * to return true. 4086de0590b94bcce27e3038c27464bed510bb564aJeff Brown * 4186de0590b94bcce27e3038c27464bed510bb564aJeff Brown * @param selfChange True if this is a self-change notification. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void dispatchChange(boolean selfChange) { 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(mObservers) { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (ContentObserver observer : mObservers) { 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!selfChange || observer.deliverSelfNotifications()) { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project observer.dispatchChange(selfChange); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5486de0590b94bcce27e3038c27464bed510bb564aJeff Brown * Invokes {@link ContentObserver#onChange} on each observer. 5586de0590b94bcce27e3038c27464bed510bb564aJeff Brown * 5686de0590b94bcce27e3038c27464bed510bb564aJeff Brown * @param selfChange True if this is a self-change notification. 5786de0590b94bcce27e3038c27464bed510bb564aJeff Brown * 5886de0590b94bcce27e3038c27464bed510bb564aJeff Brown * @deprecated Use {@link #dispatchChange} instead. 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6086de0590b94bcce27e3038c27464bed510bb564aJeff Brown @Deprecated 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void notifyChange(boolean selfChange) { 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(mObservers) { 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (ContentObserver observer : mObservers) { 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project observer.onChange(selfChange); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 69