diff options
| -rw-r--r-- | core/java/android/accounts/AccountManager.java | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 9ef13de6d444..b9727198a673 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -1857,12 +1857,16 @@ public class AccountManager { handler = (handler == null) ? mMainHandler : handler; handler.post(new Runnable() { public void run() { - try { - listener.onAccountsUpdated(accountsCopy); - } catch (SQLException e) { - // Better luck next time. If the problem was disk-full, - // the STORAGE_OK intent will re-trigger the update. - Log.e(TAG, "Can't update accounts", e); + synchronized (mAccountsUpdatedListeners) { + try { + if (mAccountsUpdatedListeners.containsKey(listener)) { + listener.onAccountsUpdated(accountsCopy); + } + } catch (SQLException e) { + // Better luck next time. If the problem was disk-full, + // the STORAGE_OK intent will re-trigger the update. + Log.e(TAG, "Can't update accounts", e); + } } } }); |