summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-11 19:24:44 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-11 19:24:44 -0400
commitd3e061fc8f4a2a1e6b98ee43fd706ac09c786b61 (patch)
tree5ac72ec25ef634fc0e0afa8a86e0e6394c29432f /core/java
parentb942db35c52acc6842438b0de8f60d4de1e34e21 (diff)
parentb6437245c280596d0a580b8d67189739cf793250 (diff)
Merge change 24609 into eclair
* changes: If disk-full, don't crash the system server. Still todo: when we have disk we should trigger the event again.
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/accounts/AccountManager.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index d04abe59c680..9afeb74b02f4 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -21,11 +21,13 @@ import android.content.Intent;
import android.content.Context;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
+import android.database.SQLException;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.os.Parcelable;
+import android.util.Log;
import java.io.IOException;
import java.util.concurrent.Callable;
@@ -364,7 +366,13 @@ public class AccountManager {
handler = (handler == null) ? mMainHandler : handler;
handler.post(new Runnable() {
public void run() {
- listener.onAccountsUpdated(accountsCopy);
+ 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);
+ }
}
});
}
@@ -824,6 +832,8 @@ public class AccountManager {
// Register a broadcast receiver to monitor account changes
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION);
+ // To recover from disk-full.
+ intentFilter.addAction(Intent.ACTION_DEVICE_STORAGE_OK);
mContext.registerReceiver(mAccountsChangedBroadcastReceiver, intentFilter);
}
}