summaryrefslogtreecommitdiff
path: root/core/java/android/database/DataSetObservable.java
diff options
context:
space:
mode:
authorVasu Nori <vnori@google.com>2010-04-15 11:25:51 -0700
committerVasu Nori <vnori@google.com>2010-04-16 15:50:41 -0700
commit20f549fd2f40db524242c9038d7d63356adf95fc (patch)
tree5c3ac7031f0bc411bb0f433121038814abcd8180 /core/java/android/database/DataSetObservable.java
parent0d8d70bba458cd0b394313e0e61364f1bce07644 (diff)
several minor bugs and things listed below
bug:1648729 print warning if a requery is attemped on main thread bug:2459293 browser death because of NoSuchElementException. don't use iterator to march thru the ArrayList. use old style for() loop. bug:1609474 don't allow downgrades of databases other stuff use LRUcache to maintain statement-cache in SQLiteDatabase Change-Id: I3a42022162f4dfcc75f7d0cfcad8f20f1d193249
Diffstat (limited to 'core/java/android/database/DataSetObservable.java')
-rw-r--r--core/java/android/database/DataSetObservable.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/core/java/android/database/DataSetObservable.java b/core/java/android/database/DataSetObservable.java
index 9200e8135316..51c72c1877e8 100644
--- a/core/java/android/database/DataSetObservable.java
+++ b/core/java/android/database/DataSetObservable.java
@@ -27,8 +27,12 @@ public class DataSetObservable extends Observable<DataSetObserver> {
*/
public void notifyChanged() {
synchronized(mObservers) {
- for (DataSetObserver observer : mObservers) {
- observer.onChanged();
+ // since onChanged() is implemented by the app, it could do anything, including
+ // removing itself from {@link mObservers} - and that could cause problems if
+ // an iterator is used on the ArrayList {@link mObservers}.
+ // to avoid such problems, just march thru the list in the reverse order.
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onChanged();
}
}
}
@@ -39,8 +43,8 @@ public class DataSetObservable extends Observable<DataSetObserver> {
*/
public void notifyInvalidated() {
synchronized (mObservers) {
- for (DataSetObserver observer : mObservers) {
- observer.onInvalidated();
+ for (int i = mObservers.size() - 1; i >= 0; i--) {
+ mObservers.get(i).onInvalidated();
}
}
}